2009-03-30 3 views
11

Qualcuno sa come ottenere il RequestContext corrente dall'evento Application_Error in global.asax ?? Il mio problema è che ho bisogno di fare un reindirizzamento, e quindi ho bisogno di avere l'url generato usando UrlHelper - che prende il RequestContext sopraccitato.Accesso a RequestContext da global.asax

+1

questa risposta ti aiuta? http://stackoverflow.com/a/2032154/330606 –

risposta

11

Mentre non v'è alcun modo diretto di accesso al RequestContext, è possibile creare uno voi stessi:

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

Così l'UrlHelper può essere costruito attraverso:

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

Non abbastanza, ma ottiene il lavoro fatto.

+0

È possibile accedere a RequestContext, fare riferimento alla mia risposta. –

0

Crea un HttpContextBase dal HttpContext corrente, e da questo è possibile generare un 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

è possibile accedere al contesto richiesta utilizzando

HttpContext.Current.Request.RequestContext 

Oppure, se sei in Global.asax è possibile utilizzare

Context.Request.RequestContext 

direttamente.