2009-03-30 5 views
11

Est-ce que quelqu'un sait comment obtenir le RequestContext actuel de l'événement Application_Error dans global.asax ?? Mon problème est que j'ai besoin de faire une redirection, et de ce fait j'ai besoin d'avoir l'URL générée en utilisant UrlHelper - qui prend le RequestContext mentionné ci-dessus.Accéder à RequestContext depuis global.asax

+1

cette réponse vous aide? http://stackoverflow.com/a/2032154/330606 –

Répondre

11

Bien qu'il n'y ait aucun moyen direct d'accéder au RequestContext, vous pouvez en créer un vous-même:

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

Ainsi, le UrlHelper peut être construit via:

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

Pas assez, mais il fait le Travail terminé.

+0

Vous pouvez accéder au RequestContext, s'il vous plaît se référer à ma réponse. –

0

Créer un HttpContextBase du HttpContext actuel, et de ce que vous pouvez générer 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

Vous pouvez accéder au contexte de demande à l'aide

HttpContext.Current.Request.RequestContext 

Ou, si vous êtes dans le Global.asax vous pouvez utiliser

Context.Request.RequestContext 

directement.

Questions connexes