从global.asax访问RequestContext

时间:2009-03-30 10:59:58

标签: model-view-controller

有谁知道如何从global.asax中的Application_Error事件获取当前的RequestContext?我的问题是我需要进行重定向,因此需要使用UrlHelper生成url - 它采用了前面提到的RequestContext。

3 个答案:

答案 0 :(得分:11)

虽然没有直接访问RequestContext的方法,但您可以自己创建一个:

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

因此可以通过以下方式构建UrlHelper:

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

不漂亮,但它完成了工作。

答案 1 :(得分:7)

您可以使用

访问请求上下文
HttpContext.Current.Request.RequestContext

或者,如果你在Global.asax,你可以使用

Context.Request.RequestContext

直接

答案 2 :(得分:0)

从Current HttpContext创建一个HttpContextBase,然后从中生成一个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);