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

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

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

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

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

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

Ответ 1

'', закодированный в %20, использует HttpUtility.UrlPathEncode.

Ответ 2

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

Ответ 3

@HttpUtility.UrlPathEncode(path)

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