में ऑटोफैक का उपयोग करके HttpContextBase इंजेक्ट करने के लिए कैसे मैं ASP.MVC 4
और Autofac
का उपयोग कर रहा हूं।एएसपी.नेट एमवीसी 4
मैं अपने global.asax.cs
फ़ाइल में निम्न पंजीकृत किया है: एक साथ ठीक उसी कोड
private readonly HttpContextBase httpContext;
public HomeController(HttpContextBase httpContext)
{
this.httpContext = httpContext;
}
मैं प्रयोग किया है:
ContainerBuilder builder = new ContainerBuilder();
builder.Register(c => c.Resolve<HttpContextBase>().Request)
.As<HttpRequestBase>()
.InstancePerHttpRequest();
builder.Register(c => c.Resolve<HttpContextBase>().Response)
.As<HttpResponseBase>()
.InstancePerHttpRequest();
builder.Register(c => c.Resolve<HttpContextBase>().Server)
.As<HttpServerUtilityBase>()
.InstancePerHttpRequest();
builder.Register(c => c.Resolve<HttpContextBase>().Session)
.As<HttpSessionStateBase>()
.InstancePerHttpRequest();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<WebWorkContext>().As<IWorkContext>().InstancePerHttpRequest();
मेरे घर नियंत्रक में मैं इस (सिर्फ परीक्षण प्रयोजनों के लिए) है एएसपी.नेट एमवीसी 3 प्रोजेक्ट और यह ठीक काम करता है। अब इस परियोजना में मुझे त्रुटियां मिल रही हैं। यकीन नहीं है कि क्यों? त्रुटि है कि मैं हो रही है:
कंस्ट्रक्टर्स में से कोई भी प्रकार पर 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' के साथ मिला 'MyProject.Web.Controllers.HomeController' उपलब्ध सेवाओं और मानकों के साथ लागू किया जा सकता है : कन्स्ट्रक्टर 'शून्य .ctor (System.Web.HttpContextBase) के पैरामीटर' System.Web.HttpContextBase httpContext 'को हल नहीं कर सकता। Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance (IComponentContext संदर्भ, IEnumerable 1 parameters) at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable
1 पैरामीटर) Autofac.Core.Resolving.InstanceLookup.Execute() पर Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance (ISharingLifetimeScope currentOperationScope, IComponent पंजीकरण पंजीकरण, Autofac.Core.Registration.ExternalRegistrySource पर IENumerable 1 parameters) at Autofac.Core.Resolving.InstanceLookup.ResolveComponent(IComponentRegistration registration, IEnumerable
1 पैरामीटर)। <
मुझे यकीन नहीं है कि यह क्यों काम नहीं करेगा? क्या मुझे एएसपी.नेट 4 में चीजों को अलग-अलग करने की ज़रूरत है?
मेरे पास एक अलग परियोजना है जिसमें मैं HttpContextBase
इंजेक्ट करना चाहता हूं और मुझे एक ही त्रुटि मिल रही है।
मैं आपके कोड में नहीं देखता हूं, जहां आप 'HttpContextBase' को पंजीकृत करते हैं ... 'builder.RegisterModule (नया AutofacWebTypesModule()) के साथ' AutofacWebTypesModule' को पंजीकृत करने का प्रयास करें; ' – nemesv
हाँ मैंने अभी यह देखा है उनकी वेबसाइट पर। मैं 'निर्माता' करने से पहले 'AutofacWebTypesModule' पहले पंजीकरण करता हूं। रजिस्ट्रार (सी => सी। रिसोलव() अनुरोध) '..? –
मैं इस मामले में पंजीकरण आदेश से कोई फर्क नहीं पड़ता। – nemesv