У нас есть приложение, которое было настроено на использование AutoFac с ASP.Net MVC:
1) Все контроллеры, информация о действиях и маршрутизация были зарегистрированы вручную с использованием AutoFac
2) Контроллеры разрешаются с помощью реализации метода CreateController () класса IControllerFactory (AutoFacControllerFactory).
3) Я добавил новый контроллер API в существующее приложение
4) Маршрутизация веб-API была добавлена до любых традиционных маршрутов ASP.Net следующим образом:
GlobalConfiguration.Configuration.Routes.MapHttpRoute("GetNetworkFeatures",
"secure/banking/administration/GetNetworkFeatures/Get",
new { controller = "GetNetworkFeatures" });
5) Новые API-контроллеры были зарегистрированы с использованием AutoFac до того, как containerBuilder.Build () si был вызван следующим образом:
foreach (var module in modules)
{
builder.RegisterApiControllers(module);
}
container = containerBuilder.Build();
GetNetworkFeaturesController is loaded in one of the above modules
6) Оба средства разрешения зависимостей были зарегистрированы следующим образом:
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
7). Net версия 4.5.2, мы используем ASP.Net MVC версии 3, AutoFac версии 2.6.3.862, AutoFac.Integration.MVC версии 2.6.3.862, AutoFac.Integration.WebApi версия
2.6.3.863, и версия Newtonsoft.Json - 11.0.0.0, версия сервера IIS - 6.1 в Windows Server 2008
8) Цель состоит в том, чтобы сделать так, чтобы Autofac, Asp.net MVC-маршрутизация и веб-API-маршрутизация сосуществовали в одном пуле приложений, когда я пробую конечную точку веб-API
http://localhost:7070/secure/banking/administration/GetNetworkFeatures/Get, он все еще идет в метод CreateController () AutoFacControllerFactory, вместо маршрутизации в метод Get () контроллера Web API GetNetworkFeaturesController
9) Я думаю, что это может быть связано, поэтому я изменил его на true, но проблема все еще сохраняется. В основном это выглядит как
настроенная маршрутизация Web API не соблюдается, хотя в ней нет ошибок компиляции и сборки, если я удалил следующий маршрут по умолчанию, он начнет выдавать ошибку HTTP 403:
RouteTable.Routes.MapRoute("Default", "{*url}", new { controller = "Unspecified", action = "Unspecified" });
10) Ссылка на следующие темы:
https://stackoverflow.com/questions/11484904/is-it-possible-to-configure-autofac-to-work-with-asp-net-mvc-and-asp-net-web-api
https://stackoverflow.com/questions/37069666/autofac-with-web-api-controller
https://stackoverflow.com/questions/44986001/web-api-route-values-is-empty-on-action-executes-filter
https://stackoverflow.com/questions/15556035/all-asp-net-web-api-controllers-return-404
https://www.aspforums.net/Threads/218940/Solved-URL-Routing-not-working-with-Web-API-in-IIS-server-and-ASPNet-MVC/