#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, у вас есть два варианта:
Измените код вашего приложения, чтобы не использовать контекст запроса (рекомендуется). Переведите приложение в классический режим (НЕ рекомендуется).
Поскольку вы просто получаете физический путь приложения, я бы придерживался интегрированного режима и просто изменил ваш код.