2009-03-30 20 views
11

¿Alguien sabe cómo obtener el RequestContext actual del evento Application_Error en global.asax? Mi problema es que necesito hacer un redireccionamiento y, por lo tanto, necesito que se genere el url usando UrlHelper, que toma el mencionado RequestContext.Accediendo a RequestContext desde global.asax

+1

¿Te está respondiendo esta pregunta? http://stackoverflow.com/a/2032154/330606 –

Respuesta

11

Si bien no hay forma directa de acceder a la RequestContext, puede crear uno usted mismo:

RequestContext context = new RequestContext(new HttpContextWrapper(HttpContext.Current), RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current))) 

Así que la UrlHelper se puede construir a través de:

UrlHelper helper = new UrlHelper(new RequestContext(new HttpContextWrapper(HttpContext.Current), RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current)))); 

No es bonita, pero hace el trabajo hecho.

+0

Puede acceder al RequestContext, consulte mi respuesta. –

0

Crear una HttpContextBase del HttpContext actual, y de que se puede generar una UrlHelper:

// Create Http Context Base from current Context 
var contextBase = new System.Web.HttpContextWrapper(System.Web.HttpContext.Current); 
// Get its request context 
System.Web.Routing.RequestContext requestContext = contextBase.Request.RequestContext; 
// Build url helper from request context 
var urlHelper = new System.Web.Mvc.UrlHelper(requestContext); 
7

Se puede acceder al contexto de la petición usando

HttpContext.Current.Request.RequestContext 

O, si usted está en el Global.asax puede usar

Context.Request.RequestContext 

directamente.

Cuestiones relacionadas