Я занимаюсь разработкой пользовательского URL Rewriter для проекта ASP.Net 3.5.Этот перезаписчик функционально не отличается от большинства переписчиков, с той лишь разницей, что дружественная коллекция URL не загружается из файла web.config - вместо этого она поступает из базы данных.Я сделал наивное предположение, что было бы легко разработать собственный модуль перезаписи с нуля, но теперь я знаю беспорядок, в который я себя ввел. Я отвлекся;Давайте сразу перейдем к техническим вопросам.
Во время тестирования переписчика я настроил дружественный URL-адрес, который приведет пользователя к веб-форме.Постбэки из этой формы не должны изменять дружественный адрес, как можно было бы ожидать, поэтому
http://my.web.site/app_root/FriendlyURL
всегда переписывается как http://my.web.site/app_root/not_friendly/form.aspx
Все хорошо, когда браузер впервые загружает FriendlyURL.Страница появляется и полностью функциональна.Однако, когда форма отправляется обратно на сервер, страница просто перезагружается, но на стороне сервера IsPostBack
имеет значение false.Это похоже на F5, за исключением того, что действительно произошел HTTP POST.
Неудивительно, что когда взаимодействие происходит через «недружественный» URL, действие POST запускает обратную передачу, как и ожидалось.Это свидетельствует о том, что HttpContext.RewritePath
каким-то образом портит жизненный цикл страницы таким образом, что теряет смысл операции обратной передачи.Любые направления?Спасибо.