Member 12824529 Ответов: 1

Почему приложение, созданное как webapi, работает, в то время как тот же webapi, добавленный в существующий проект MVC, не будет маршрутизироваться?


Если мое тестовое приложение Web API (созданное как приложение Web API) отлично работает с URL-адреса, то какова может быть причина, по которой точно такой же код, скопированный в прямое приложение MVC, не проходит маршрутизацию? Есть ли что-то существенное, чего не хватает, если я не выбрал WebAPI при создании приложения MVC? Я пытаюсь добавить WebAPI (который извлекает данные из хранимой процедуры SQL Server) в существующее приложение MVC. Я зашел в браузер моделей, убедился и выполнил функцию импорта, чтобы ввести поля, как я это сделал в тестовом приложении.

Я не использую отдельный проект для WebAPI; все это в одном проекте, так что нет никаких проблем с номером порта. Я застрял на этом уже несколько дней. Я удалил и повторно создал модель в приложении MVC много раз. Тестовое приложение и приложение MVC с добавленным веб-API имеют точно такой же APIController и тот же файл WebApiConfig.cs. Когда я ввожу URL-адрес с данными в браузере, он работает в тестовом приложении, давая правильный ответ браузеру, но не в приложении MVC.

Ответ браузеру при использовании приложения MVC выглядит следующим образом:

Ошибка сервера в приложении '/'
Ресурс не может быть найден.

Если у кого-нибудь есть идея, в чем может быть причина, пожалуйста, дайте мне знать. Спасибо.

--------------------------------------------------------------------------

WebApiConfig.в CS

// Маршруты веб-API
конфиг.MapHttpAttributeRoutes();

конфиг.Маршруты.MapHttpRoute(
имя: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
по умолчанию: new { id = RouteParameter.Необязательный }
);


Контроллер
публичный класс CompletedRoundsController : ApiController
{
// ПОЛУЧИТЬ
public IEnumerable<string> Get(int ID, string AsmtType)
{
использование (WebAPIEntities db = новые WebAPIEntities())
{
List<string> R = db.spCurrentRounds(ID, AsmtType).Выберите(x => x.завершено).Список();
возвращение Р;
}
}

Что я уже пробовал:

http://localhost:58398/api/CompletedRounds?ID=1&AsmtType=АВС

1 Ответов

Рейтинг:
4

Member 12824529

Я нашел решение. Хотя леса "WebAPI Controller" автоматически добавили файл WebApiConfig.cs, он не убедился, что следующие две строки существуют в файле Global.asax, поэтому я добавил их, и теперь он отлично работает.


использование системы;
использование системы.Коллекции.Общий;
использование System.Linq;
использование системы.Сеть;
используя системы.Веб.Протокол HTTP;
использование System.Web.Mvc;
использование System.Web.Optimization;
использование System.Web.Routing;
использование System.Web.Security;
использование System.Web.SessionState;

пространство имен CCOutcomesWeb
{
публичный класс MvcApplication : System.Web.HttpApplication
{
охраняемых недействительными событий Application_Start()
{
Районная регистрация.RegisterAllAreas();
Глобальная конфигурация.Настройка(WebApiConfig.Зарегистрировать);
FilterConfig.RegisterGlobalFilters(Глобалфильтры.Фильтры);
RouteConfig.RegisterRoutes(RouteTable.Маршруты);
BundleConfig.RegisterBundles(BundleTable.Связки);
}
}
}