Dies ist eine Asp.net Anwendung (nicht MVC) läuft .Net 3.5Wie registrieren Httpcontextbase mit Autofac in Asp.Net (nicht MVC)
Ich habe dies:
protected void Application_Start(object sender, EventArgs e)
{
...
builder.Register(c => new HttpContextWrapper(HttpContext.Current))
.As<HttpContextBase>()
.InstancePerHttpRequest();
}
Aber es doesn arbeite nicht.
Der Fehler mir dies immer:
Kein Rahmen mit einem Tag Matching ‚httprequest‘ ist sichtbar aus dem Bereich, in dem die Instanz angefordert wurde. Dies bedeutet im Allgemeinen, dass eine als per-HTTP-Anforderung registrierte Komponente von einer SingleInstance() - Komponente (oder einem ähnlichen Szenario) angefordert wird. Unter der Webintegration werden immer Abhängigkeiten von DependencyResolver.Current oder ILifetimeScopeProvider.RequestLifetime angefordert, niemals vom Container selbst .
Also dann fand ich diese: https://stackoverflow.com/a/7821781/305469
Und ich tat dies statt:
builder.Register(c => new HttpContextWrapper(HttpContext.Current))
.As<HttpContextBase>()
.InstancePerLifetimeScope();
Aber jetzt, wenn ich dies tun:
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);
}
}
und ich bekam eine null-Verweisausnahme .
Seltsamerweise context.Response ist nicht null, es ist, wenn ich .Redirect(), dass es werfen.
Ich frage mich, ob .InstancePerLifetimeScope(); ist das Problem.
BTW, versuchte ich mit Response.Redirect() und es funktioniert perfekt.
Also was könnte das Problem sein?
Danke,
Chi
In Ihrem ersten Beispiel mit 'InstancePerHttpRequest' was bedeutet es: funktioniert nicht? Ausnahme usw.? Und wie lösen Sie Ihren 'HttpService' auf oder wie wird er registriert? Wenn Sie die Nullreferenz-Ausnahme erwähnt haben, was ist der vollständige Stack-Trace? – nemesv
Wie Nemesv sagte, warum funktioniert die .InstancePerHttpRequest() Version nicht? – codeulike
Danke Jungs, ich habe die Frage aktualisiert, um den Fehler, den ich bekam, wenn ich .InstancePerHttpRequest() –