【发布时间】:2009-03-30 10:59:57
【问题描述】:
有谁知道如何从 global.asax 中的 Application_Error 事件中获取当前的 RequestContext 吗?我的问题是我需要进行重定向,因此需要使用 UrlHelper 生成 url - 它采用上述 RequestContext。
【问题讨论】:
-
这个答案对你有帮助吗? stackoverflow.com/a/2032154/330606
有谁知道如何从 global.asax 中的 Application_Error 事件中获取当前的 RequestContext 吗?我的问题是我需要进行重定向,因此需要使用 UrlHelper 生成 url - 它采用上述 RequestContext。
【问题讨论】:
虽然没有直接访问 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))));
不漂亮,但它完成了工作。
【讨论】:
您可以使用
访问请求上下文HttpContext.Current.Request.RequestContext
或者,如果您在 Global.asax 中,您可以使用
Context.Request.RequestContext
直接。
【讨论】:
从当前 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);
【讨论】: