मैं Autofac WebAPI के साथ काम करने की कोशिश कर रहा हूँ। मेरे पास मुख्य वेब प्रोजेक्ट से एक अलग परियोजना में मेरे एपीकंट्रोलर हैं।ASP.NET WebAPI + Autofac नहीं मिल ApiControllers
InventorySystem.Web.UI InventorySystem.Web.Api.Controllers
जब भी मैं एक API मार्ग मैं प्रतिक्रिया प्राप्त करने के लिए ब्राउज़ करने के लिए प्रयास करें:
<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>
जब मैं Autofac कोड मैं के माध्यम से कदम देखें कि मेरा नियंत्रक पंजीकृत है, लेकिन AutofacControllerActivator.Create() शून्य देता है। विशेष रूप से लाइन वापसी (ResolutionExtensions.ResolveOptional (गुंजाइश, 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));
क्या मुझे कुछ याद आ रही है?
धन्यवाद
क्या आप जिस असेंबली स्थान को RegisterAPIControllers को प्रदान कर रहे हैं वह निश्चित रूप से सही है? जब मैंने अपने असेंबली नाम के साथ गलती की तो मुझे वही त्रुटि मिली। – Gavin
@ गैविन हां, क्योंकि मेरा एपिकंट्रोलर पंजीकृत हो जाता है। यह सिर्फ हल हो रहा है जो असफल लगता है। – user695595