Проблема с объектом запроса IHttpHandler и виртуальным каталогом

StackOverflow https://stackoverflow.com/questions/2422264

Вопрос

Я пишу класс, который наследуется от 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 предмет под рукой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top