Можно ли правильно закодировать обратную косую черту в URL с перезаписью URL? - PullRequest
11 голосов
/ 19 мая 2010

Я работаю над проектом ASP.NET MVC2. Проблема в том, что когда строка, которая будет переписана в URL, содержит специальный символ, такой как обратный слеш или вопросительный знак, URL будет неправильным, даже если я его кодировал ранее.

Например:

  1. У меня есть идентификатор продукта " p001 \ 2-2 ".
  2. Я закодировал его в " p001% 5C2-2 "
  3. URL-адрес http://domain.com/Product/p001%5C2-2 отвечает HTTP-ошибка 400 - неверный запрос.

Как я могу получить это правильно?

Ответы [ 2 ]

5 голосов
/ 22 июня 2010

Попробуйте использовать Html.Encode для разрешения обратной косой черты. Если обратный слеш является единственным «специальным» символом в вашем идентификаторе, вы можете использовать Заменить («% 5C», «\»).

Вы проверили свою карту маршрутизации? должен быть маршрут как

Продукт / {prodictID}

0 голосов
/ 31 декабря 2012

У меня была похожая проблема с% 2F в моих URL. Попробуйте добавить флаг nOrmalize к вашему rewriteRule.

Пример с флагом нормализации "O", выделенным жирным шрифтом:

RewriteRule ^ (. *) Index.html.

...