Я пытаюсь заставить Autofac работать с WebApi. У меня есть ApiControllers в отдельном проекте из основного веб-проекта.ASP.NET WebApi + Autofac не находит ApiControllers
InventorySystem.Web.UI InventorySystem.Web.Api.Controllers
Всякий раз, когда я пытаюсь просмотреть на маршрут апи я получаю ответ:
<Exception xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ExceptionType>System.ArgumentNullException</ExceptionType>
<Message>Value cannot be null. Parameter name: value</Message>
<StackTrace>
at System.Web.Http.Controllers.HttpControllerContext.set_Controller(IHttpController value)
at System.Web.Http.Dispatcher.DefaultHttpControllerFactory.CreateInstance(HttpControllerContext controllerContext, HttpControllerDescriptor controllerDescriptor)
at System.Web.Http.Dispatcher.DefaultHttpControllerFactory.CreateController(HttpControllerContext controllerContext, String controllerName)
at Autofac.Integration.WebApi.AutofacControllerFactory.CreateController(HttpControllerContext controllerContext, String controllerName)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncInternal(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
</StackTrace>
</Exception>
Когда я пошагово код I Autofac что мой контроллер зарегистрирован, но AutofacControllerActivator.Create() возвращает значение null. В частности, строка return (ResolutionExtensions.ResolveOptional (scope, controllerType) как IHttpController);
Код автофокуса: строка binDirectory = Path.Combine (HttpRuntime.AppDomainAppPath, "bin");
var builder = new ContainerBuilder();
builder.ConfigureWebApi(GlobalConfiguration.Configuration);
builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();
builder.RegisterApiControllers(Assembly.LoadFile(Path.Combine(binDirectory, "InventorySystem.Web.Api.dll"))).PropertiesAutowired();
builder.RegisterFilterProvider();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
GlobalConfiguration.Configuration.ServiceResolver.SetResolver(new AutofacWebApiDependencyResolver(container));
Я что-то не хватает?
Благодаря
Является ли местоположение сборки, которое вы предоставляете зарегистрированным пользователям? Я получил ту же ошибку, когда ошибся со своим именем сборки. – Gavin
@Gavin да, потому что мой апик-рунтроллер действительно регистрируется. Это просто решение, которое, похоже, терпит неудачу. – user695595