【问题标题】:Accessing RequestContext from global.asax从 global.asax 访问 RequestContext
【发布时间】:2009-03-30 10:59:57
【问题描述】:

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

【问题讨论】:

标签: model-view-controller


【解决方案1】:

虽然没有直接访问 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))));

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

【讨论】:

  • 可以访问RequestContext,请参考我的回答。
【解决方案2】:

您可以使用

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

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

Context.Request.RequestContext

直接。

【讨论】:

    【解决方案3】:

    从当前 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);
    

    【讨论】:

      猜你喜欢
      • 2011-09-02
      • 2019-10-20
      • 2012-09-06
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 1970-01-01
      相关资源
      最近更新 更多