Кто-нибудь знает, как получить текущий RequestContext из события Application_Error в global.asax?? Моя проблема в том, что мне нужно сделать переадресацию и, следовательно, нужно иметь URL-адрес, сгенерированный с помощью UrlHelper, который принимает вышеупомянутый RequestContext.
Доступ к RequestContext из global.asax
Ответ 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);