Запрос недоступен в этом контексте -> В Global.asax -> что такое replace

#c# #asp.net #request #global-asax

#c# #asp.net #запрос #глобальный-asax

Вопрос:

почему в строке ниже ошибка в global.asax :

 string RelativeFilePath = "~/"   (AbsoluteFilePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty)).Replace("\", "/");  
  

Ошибка :

Запрос недоступен в этом контексте

что такое замена?

заранее спасибо

Ответ №1:

Если вы размещаете свое приложение в интегрированном конвейере IIS7, объекты HttpContext недоступны Application_Start . Для вашего сценария вы могли бы сделать это вместо:

 string relativeFilePath = "~/"   AbsoluteFilePath
    .Replace(HostingEnvironment.ApplicationPhysicalPath, String.Empty)
    .Replace("\", "/"); 
  

Ответ №2:

В IIS7 или более поздней версии был введен интегрированный конвейер, и некоторые правила были изменены. Вы не можете получить доступ к текущему HttpContext в Application_Start . Вот дополнительная информация.

Цитирую, вот ваши варианты:

Итак, что это значит для вас?

В принципе, если вам посчастливилось получить доступ к контексту запроса в Application_Start, у вас есть два варианта:

Измените код вашего приложения, чтобы не использовать контекст запроса (рекомендуется). Переведите приложение в классический режим (НЕ рекомендуется).

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