2010-06-01 5 views
2

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

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

Спасибо!

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

+0

Возможно, я ошибаюсь, но, чтобы быть абсолютно безопасным, вы могли бы кодировать base64 на стороне отправки и декодировать base64 на принимающей стороне? – barrycarter

+0

@Barry, который победил бы цель использования простых текстовых путей. –

ответ

1

Вот что говорит 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, которые могут вызвать проблемы с маршрутизацией. Поэтому попробуйте изменить настройку «Управляемый режим трубопровода» пула приложений из интегрированного в классический.

+0

Я не кодирую весь маршрут, только запрос и моя точка с использованием URL-кодирования в параметре запроса не работают для &,% и нескольких других неизвестных символов. Интересно, что когда я кодировал for & on webdev, он работал, но не на IIS 7, но некоторые из них работают на webdev, а не на IIS 7. Я думаю, что это был знак вопроса. Я временно решил это, удалив эти символы из моих параметров. –

+0

Какую настройку для пула приложений вы используете? – Thea