Доступ к RequestContext из global.asax

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

Ответ 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))));

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

Ответ 2

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

HttpContext.Current.Request.RequestContext

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

Context.Request.RequestContext

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

Ответ 3

Создайте 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);