HttpContext.Current запрос «Не доступен» при выполнении «Локальный веб-сервер IIS - PullRequest
0 голосов
/ 10 февраля 2012

Я пытался работать с контекстом http (с помощью Httpcontext.current) в событии application_start в global.asax, тогда вы получите сообщение об ошибке: - Запрос HttpContext.Current недоступен в этом контексте.

Проблема может быть легко решена с помощью обходного пути с помощью статического конструктора, который запускается при первом обращении к объекту. Мы можем сохранить флаг в событии Application_Beginrequest и легко определить запрос, который инициализировал приложение.

Но в этом случае он создается при каждом запросе, что мне не нужно. Я хочу создать или получить доступ к Httpcontext.current один раз

Мой код выглядит следующим образом: -

        `//var context = new HttpContextWrapper(HttpContext.Current);
        //var routeData = RouteTable.Routes.GetRouteData(context) ?? new RouteData();
        //var requestContext = new RequestContext(context, routeData);
        //var urlHelper = new UrlHelper(requestContext);
        //var url = urlHelper.Action("Home", "Index");

        var httpContext = new HttpContextWrapper(HttpContext.Current);
        UrlHelper urlHelper = new UrlHelper(new RequestContext(httpContext, new RouteData()));
        if (urlHelper.RequestContext.HttpContext.Request.IsLocal)
        {

        }
        //if (((requestContext.HttpContext).Request).IsLocal)
        //{

        //}`

1 Ответ

1 голос
/ 10 февраля 2012

Нет экземпляра HttpContext и HttpRequest в App_Start в интегрированном режиме.Вы должны обойти это.Если вам действительно нужно что-то сделать по первому запросу, зарегистрируйте новый обработчик BeginRequest в вашем global.asax и отмените регистрацию, когда вы закончите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...