Ответ 1
'', закодированный в %20, использует HttpUtility.UrlPathEncode
.
Я использую HttpUtility.UrlEncode для кодирования любого значения, которое используется в маршруте.
Я уже решил проблему с кодировкой косой черты. Новая проблема, с которой я столкнулся сейчас, - это пробелы. Пространство кодируется как +.
Это работает на VS интегрированном веб-сервере, но у меня есть проблема с ним в IIS7 на Windows Server 2008.
Если у меня есть URL http://localhost/Home/About/asdas+sdasd
Я получаю ошибку 404.11 - Запрос содержит двойную escape-последовательность.
Я знаю, что могу просто заменить пространство на "%20", но я не хочу заботиться о кодировке propper. Есть ли какой-либо готовый для использования UrlEncoder для MVC там?
'', закодированный в %20, использует HttpUtility.UrlPathEncode
.
Любая кодировка URL-адресов чаще всего предназначена для работы с компонентом пути URL-адреса, потому что разные схемы имеют разные символы в безопасном списке. Посмотрите на свои библиотеки urlencoder и просто используйте его в пути и над частью URL.
@HttpUtility.UrlPathEncode(path)
UrlPathEncode просто кодирует путь URL, а не кодирует весь URL.