My WebApp является частью CMS , и когда я предоставляю пользователю HTML-страницу, она обычно содержит относительные пути в a.href и img.src атрибуты.
В настоящее время я обращаюсь к ним по таким URL-адресам, как: ~ / get-data.aspx / экземпляр / user / page.html - где instance указывает конкретный экземпляр для отчета, а "user / page.html" - это путь, созданный внешним приложением, которое генерирует контент.
Это довольно надежно работает с кодом в методе BeginRequest приложения, который переводит текст после «.aspx» в строку запроса, а затем использует Context.RewritePath () .
Пока все хорошо, но я только что споткнулся о чем-то, что застало меня врасплох: кажется, что если какая-либо строка запроса (" instance / user / page.html") случайно содержит знак плюс (" + "), метод BeginRequest никогда не вызывается, и 404 немедленно возвращается пользователю.
Итак, мой вопрос состоит из двух частей:
Правильно ли я верю в то, что "+" вызовет 404, и если да, то есть ли другие вещи, которые могут вызвать аналогичные проблемы? Есть ли способ обойти эту проблему (возможно, метод, отличный от BeginRequest )?
Есть ли лучший способ сохранить относительные URL-пути для сгенерированного контента, чем тот, который я использую? Я бы предпочел, чтобы администраторы сайтов не устанавливали сторонние утилиты для перезаписи, если я могу помочь.