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