IHttpHandler Запрос объекта и проблема виртуального каталога - PullRequest
1 голос
/ 11 марта 2010

Я пишу класс, который наследуется от IHttpHandler для объединения скриптов и CSS. Я хочу объединить, только если для строки запроса определен специальный параметр. Если этот параметр не определен, то я хочу записать содержимое файла, как если бы обработчик даже не участвовал. Единственная проблема, с которой я сталкиваюсь, заключается в том, что на странице есть тег сценария, который ссылается на сценарий в виртуальном каталоге, но страница, на которую я нажимаю, находится в подкаталоге приложения.

Страница, на которую ссылается скрипт управления, находится по адресу http://webserver/Admin/Default.aspx. Когда я обращаюсь к объекту Request в классе, который реализует IHttpHandler, все свойства пути к файлу следующие: control.js. Как мне решить это?

Ответы [ 2 ]

0 голосов
/ 11 марта 2010

Вот решение, которое я придумал:

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)));
0 голосов
/ 11 марта 2010

В основном вам нужен метод ResolveUrl, но у вас нет Page или каких-либо элементов управления в этом отношении. В этой статье объясняется, как это сделать без объекта Page.

...