Правильно 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-адрес.