Ich versuche Autofac mit WebApi zu arbeiten. Ich habe meine ApiControllers in einem separaten Projekt vom Haupt-Webprojekt.ASP.NET WebApi + Autofac nicht finden ApiControllers
InventorySystem.Web.UI InventorySystem.Web.Api.Controllers
Jedes Mal, wenn ich versuche, auf eine api Route zu durchsuchen i die Antwort erhalten:
<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>
Wenn ich den Autofac Code Ich trete durch Beachten Sie, dass mein Controller registriert wurde, aber AutofacControllerActivator.Create() gibt null zurück. Insbesondere wird die Zeile zurückgegeben (ResolutionExtensions.ResolveOptional (scope, controllerType) als IHttpController);
Der Autofac-Code: Zeichenfolge 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));
Fehle ich etwas?
Dank
Ist der Montageort, den Sie für RegisterAPIControllers bereitstellen, definitiv korrekt? Ich habe den gleichen Fehler, als ich einen Fehler mit meinem Assemblynamen gemacht habe. – Gavin
@Gavin ja, weil mein apicontroller registered wird. Es ist nur die Auflösung, die zu versagen scheint. – user695595