URL кодировать и маршрутизации? - PullRequest
2 голосов
/ 01 июня 2010

Я использую пользовательскую маршрутизацию в контексте веб-форм. У меня есть некоторые названия (часть моего пользовательского маршрута), в которых есть знак вопроса. Когда я URL кодирую этот текст («Вопрос?») И затем перехожу к моему маршруту, я получаю HTTP ERROR CODE 400. Очевидно, что кодированный URL-адрес каким-то образом сбивает с толку менеджера маршрутизации.

Может ли кто-то предоставить контекст и объяснение этому? Кроме того, я думаю, что мне не нужно кодировать эти данные маршрута, а просто удалить проблемные символы. Существуют ли какие-либо угрозы безопасности, если вы не используете декодирование / кодирование URL? А какие проблемы у персонажей? Список будет полезен.

Спасибо!

Обновление: Кажется, символ% не разрешен в строке запроса в пользовательском маршруте. С нетерпением ждем хороших отзывов по этому вопросу!

1 Ответ

1 голос
/ 01 июня 2010

Вот что говорит MS о UrlEncode() 'Кодировка URL гарантирует, что все браузеры будут правильно передавать текст в строках URL. Такие символы, как знак вопроса (?), Знак амперсанда (&), знак косой черты (/) и пробелы, могут быть усечены или повреждены некоторыми браузерами. В результате эти символы должны быть закодированы в тегах или в строках запроса, где строки могут быть повторно отправлены браузером в строке запроса. '

Кроме того, вы должны кодировать только параметры запроса, иначе результат вызовет проблемы. Например, если у вас есть эта ссылка

http://www.contoso.com/articles.aspx?title=ASP.NET+Examples

И вы кодируете целое, вы получите

http%3a%2f%2fwww.contoso.com%2farticles.aspx%3ftitle%3dASP.NET%2bExamples

Подробнее см. http://msdn.microsoft.com/en-us/library/zttxte6w.aspx

Я использую маршрутизацию ASP.net, которая поставляется с версией 4.0. Вот пример кода http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx. Вы можете довольно легко манипулировать своими ссылками.

ОБНОВЛЕНИЕ: Microsoft внесла некоторые изменения в IIS7, которые могут вызвать проблемы с маршрутизацией. Поэтому попробуйте изменить параметр «Режим управляемого конвейера» пула приложений с Интегрированного на Классический.

...