Проблема с объектом запроса IHttpHandler и виртуальным каталогом
-
19-09-2019 - |
Вопрос
Я пишу класс, который наследуется от IHttpHandler для объединения скрипта и css.Я хочу объединить, только если в строке запроса определен специальный параметр.Если этот параметр не определен, то я хочу записать содержимое файла так, как если бы обработчик даже не был задействован.Единственная проблема, с которой я сталкиваюсь, заключается в том, что у меня есть тег script на странице, который ссылается на скрипт в виртуальном каталоге, но страница, на которую я нажимаю, находится в подкаталоге приложения.
Страница, с которой выполняется ссылка на управляющий скрипт, находится по адресу http://webserver/Admin/Default.aspx.Когда я обращаюсь к объекту запроса в классе, который реализует IHttpHandler, все свойства пути к файлу следующие:веб-сервер/Администратор/~/SharedScripts/control.js .Как мне решить эту проблему?
Решение 2
Это решение, которое я придумал:
string fileContent = string.Empty;
string filePath = context.Request.PhysicalPath;
int tildeLocation = filePath.LastIndexOf("~");
string location = (tildeLocation == -1 ? filePath : context.Server.MapPath(filePath.Substring(tildeLocation, filePath.Length - tildeLocation)));
Другие советы
В принципе, вам нужно ResolveUrl
метод, но у вас нет Page
, или любые элементы управления, если уж на то пошло. Эта статья объясняет, как это сделать без Page
предмет под рукой.