यह एक Asp.net आवेदन (नहीं MVC) नेट 3.5Asp.Net (नहीं MVC) में Autofac साथ HttpContextBase रजिस्टर करने के लिए कैसे
मैं इस लगाया है:
protected void Application_Start(object sender, EventArgs e)
{
...
builder.Register(c => new HttpContextWrapper(HttpContext.Current))
.As<HttpContextBase>()
.InstancePerHttpRequest();
}
लेकिन यह नहीं करता है काम नहीं करता
त्रुटि मैं इस हो रही है:
एक टैग मिलान 'HttpRequest' के साथ कोई गुंजाइश गुंजाइश है, जिसमें उदाहरण अनुरोध किया गया था से दिख रहा है। यह आम तौर पर इंगित करता है कि प्रति-HTTP अनुरोध के रूप में पंजीकृत एक घटक को सिंगलइंस्टेंस() घटक (या एक समान परिदृश्य) द्वारा पुनः प्राप्त किया जा रहा है। वेब एकीकरण के तहत हमेशा निर्भरता रिसेल्वर से वर्तमान निर्भरता का अनुरोध करें। वर्तमान या ILifetimeScopeProvider.RequestLifetime, कंटेनर से कभी नहीं ।
तो फिर मैं इस पाया: https://stackoverflow.com/a/7821781/305469
और मैं इस के बजाय किया:
public class HttpService : IHttpService
{
private readonly HttpContextBase context;
public HttpService(HttpContextBase context)
{
this.context = context;
}
public void ResponseRedirect(string url)
{
//Throws null ref exception
context.Response.Redirect(url);
}
}
और मैं एक अशक्त संदर्भ अपवाद है:
builder.Register(c => new HttpContextWrapper(HttpContext.Current))
.As<HttpContextBase>()
.InstancePerLifetimeScope();
लेकिन अब जब मैं यह कर ।
आश्चर्यजनक रूप से, संदर्भ। प्रतिक्रिया शून्य नहीं है, यह तब होता है जब मैं इसे निर्देशित करता हूं। रेडियोधर्मी() जो इसे फेंक देता है।
मैं सोच रहा हूं कि .InstancePerLifetimeScope(); समस्या यह है।
बीटीडब्ल्यू, मैंने Response.Redirect() का उपयोग करने की कोशिश की और यह पूरी तरह से काम करता है।
तो समस्या क्या हो सकती है?
धन्यवाद,
ची
'InstancePerHttpRequest' के साथ आपके पहले उदाहरण में इसका क्या अर्थ है: काम नहीं करता है? अपवाद आदि? और आप अपनी 'HttpService' को कैसे हल करते हैं या यह कैसे पंजीकृत है? जब आपने नल रेफरी अपवाद का जिक्र किया तो पूर्ण स्टैकट्रैक क्या है? – nemesv
जैसा कि नेमेसेव ने कहा था, क्यों नहीं .InstancePerHttpRequest() संस्करण काम करता है? – codeulike
धन्यवाद दोस्तों, मैंने उस त्रुटि को शामिल करने के लिए प्रश्न अपडेट किया है जब मैं उपयोग करता हूं .InstancePerHttpRequest() –