Правильно URL кодировать символ пробела

Я использую HttpUtility.UrlEncode для кодирования любого значения, которое используется в маршруте.

Я уже решил проблему с кодировкой косой черты. У меня сейчас новая проблема с пробелами. Пробел кодируется как + .

Это работает на интегрированном веб-сервере VS, но у меня есть проблема с ним в IIS7 на Windows Server 2008. Если у меня есть URL http://localhost/Home/About/asdas+sdasd

Я получаю ошибку 404.11 - Запрос содержит двойную escape-последовательность.

Я знаю, что могу просто заменить пробел на "%20", но я не хочу заботиться о кодировке пропппера самостоятельно. Есть ли готовый использовать UrlEncoder для MVC там?

3 ответа

Решение

' ' закодировано для использования%20 HttpUtility.UrlPathEncode,

Любая кодировка URL чаще всего предназначена для работы с компонентом пути URL-адреса, потому что разные схемы содержат разные символы в безопасном списке. Найдите ваши библиотеки urlencoder и просто используйте их в пути и над частью URL.

@HttpUtility.UrlPathEncode(path)

UrlPathEncode просто кодирует путь URL-адреса, а не кодирует весь URL-адрес.

Другие вопросы по тегам