Доступ к RequestContext из global.asax - PullRequest
11 голосов
/ 30 марта 2009

Кто-нибудь знает, как получить текущий RequestContext из события Application_Error в global.asax ?? Моя проблема заключается в том, что мне нужно сделать перенаправление, и, следовательно, мне нужно сгенерировать URL с помощью UrlHelper - который принимает вышеупомянутый RequestContext.

Ответы [ 3 ]

11 голосов
/ 18 декабря 2009

Хотя прямого доступа к 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))));

Не красиво, но оно выполняет свою работу.

7 голосов
/ 15 марта 2013

Вы можете получить доступ к контексту запроса, используя

HttpContext.Current.Request.RequestContext

Или, если вы в Global.asax, вы можете использовать

Context.Request.RequestContext

непосредственно.

0 голосов
/ 11 августа 2011

Создайте HttpContextBase из текущего HttpContext, и из этого вы можете сгенерировать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...