Я разработал класс IHttpHandler
, и я настроил его как verb="*" path="*"
, поэтому я обрабатываю весь запрос с ним, пытаясь создать собственную реализацию REST для тестового веб-сайта, генерирует html динамически.Проблема с IHttpHandler и относительными URL-адресами
Итак, когда приходит запрос на получение файла .css, я должен сделать что-то вроде context.Response.WriteFile(Server.MapPath(url))
... то же самое для фотографий и т. Д., Я должен сам все откликнуться.
Моя основная проблема, когда я помещаю относительные URL-адреса в якорях; например, у меня есть главная страница со ссылкой, например, <a href="page1">Go to Page 1</a>
, а в Page 1 У меня есть еще одна ссылка <a href="page2">Go to Page 2</a>
. Страница 1 и 2 должны быть на том же уровне (и http://host/page2
, но когда я нажимаю «Перейти на страницу 2», я получил этот URL-адрес в обработчике: ~/page1/~/page2
... что такое боль, потому что я должен сделать url = url.SubString (url.LastIndexOf ('~')) для очистки, хотя я чувствую, что нет ничего плохого, и это поведение абсолютно нормально.
Прямо сейчас, я могу справиться с этим, но я думаю что в будущем это вызовет у меня головную боль. Я попытался установить все ссылки с абсолютными URL-адресами, используя информацию context.Request.Url
, но это также боль: D, поэтому я хотел бы знать, есть ли более приятные способ делать такие вещи.
Не стесняйтесь давать мне довольно очевидную ответственность потому что я довольно новичок в веб-разработке и, вероятно, я пропускаю что-то основное о URL-адресах, Http и так далее.
Заранее благодарен.
Является ли URL-переменная такой же, как context.Request.Url? – Sijin
переменная url использует, чтобы содержать context.Request.AbsoluteApplicationPath (я точно не помню имя этого свойства) – vtortola