Model view controller 从global.asax访问RequestContext

Model view controller 从global.asax访问RequestContext,model-view-controller,Model View Controller,有人知道如何从global.asax中的Application_Error事件获取当前RequestContext吗??我的问题是,我需要进行重定向,因此需要使用UrlHelper生成url,它接受上述RequestContext。虽然没有直接访问RequestContext的方法,但您可以自己创建一个: RequestContext context = new RequestContext(new HttpContextWrapper(HttpContext.Current), RouteTa

有人知道如何从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创建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);

您可以使用

HttpContext.Current.Request.RequestContext
或者,如果您在
Global.asax中,您可以使用

Context.Request.RequestContext

直接回答。

这个答案对你有帮助吗?您可以访问RequestContext,请参考我的答案。