Ésta es una aplicación Asp.net (no MVC) que se ejecuta Net 3.5como registrar HttpContextBase con Autofac en Asp.Net (no MVC)
lo hice:
protected void Application_Start(object sender, EventArgs e)
{
...
builder.Register(c => new HttpContextWrapper(HttpContext.Current))
.As<HttpContextBase>()
.InstancePerHttpRequest();
}
Pero Doesn no funciona
El error que estoy haciendo esto:
No se alcance con una etiqueta a juego 'httpRequest' es visible desde el ámbito en el que se pidió a la instancia. Esto generalmente indica que un componente registrado como solicitud por HTTP está siendo solicitado por un componente SingleInstance() (o un escenario similar). Bajo la integración web, siempre solicite dependencias de DependencyResolver.Current o ILifetimeScopeProvider.RequestLifetime, nunca del contenedor en sí. .
Entonces me encontré esto: https://stackoverflow.com/a/7821781/305469
Y lo hice esta vez:
builder.Register(c => new HttpContextWrapper(HttpContext.Current))
.As<HttpContextBase>()
.InstancePerLifetimeScope();
Pero ahora cuando hago esto:
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);
}
}
y me dieron una excepción nula de referencia .
Extrañamente, context.Response no es nulo, es cuando llamo .Redirect() que arroja.
Me pregunto si está usando .InstancePerLifetimeScope(); es el problema.
Por cierto, intenté usar Response.Redirect() y funciona perfectamente.
¿Cuál podría ser el problema?
Gracias,
Chi
En su primer ejemplo con 'InstancePerHttpRequest', ¿qué significa: no funciona? Excepción, etc.? ¿Y cómo resuelve su 'HttpService' o cómo está registrado? Cuando mencionó la excepción de ref nula, ¿cuál es la stacktrace completa? – nemesv
Como dijo nemesv, ¿por qué no funciona la versión .InstancePerHttpRequest()? – codeulike
Gracias chicos, he actualizado la pregunta para incluir el error que estaba recibiendo cuando uso .InstancePerHttpRequest() –