Почему следующие адреса дают мне ошибки IIS ниже:Получение ошибки 400/404 - HttpUtility.UrlEncode не кодирует полную строку?
http://192.168.1.96/cms/View.aspx/Show/Small+test A) '
А2) http://192.168.1.96/cms/View.aspx/Show/Small%20test' < - это работает, но это не результат от HttpUtility.UrlEncode()
B) http://192.168.1.96/cms/View.aspx/Show/ '% 26 $% 23funky ** !! ~' '+ страница
Ошибка при А:
HTTP Error 404.11 - Not Found
The request filtering module is configured to deny a request that contains a double escape sequence.
Ошибка для B:
HTTP Error 400.0 - Bad Request
ASP.NET detected invalid characters in the URL.
Последняя часть URL после/Show/результат после того, как текст посылается через HttpUtility.UrlEncode() так, по мнению Microsoft, это URL закодированные правильно.
Если я пользователь HttpUtility.UrlPathEncode(), а не HttpUtility.UrlEncode() Я получаю результаты A2. Но В конце концов, выглядит как:
http://192.168.1.96/TVCMS-CVJZ/cms/View.aspx/Show/ '& $ # фанки ** !! ~' '% 20page
который еще неправильно. Знает ли Microsoft, как кодировать URL вообще? Есть ли функция, которую кто-то написал, чтобы сделать это правильно?
EDIT:
Я написал свой собственный кодировщик:
static public string UrlEncode(string encode)
{
if (encode == null) return null;
string encoded = "";
foreach (char c in encode)
{
int val = (int)c;
if ((val >= 48 && val <= 57) || (val >= 65 && val <= 90) || (val >= 97 && val <= 122))
encoded += c;
else
encoded += "%" + val.ToString("X");
}
return encoded;
}
Функция работает с A2 выше всего прекрасного результата для B является:
http://192.168.1.96/cms/View.aspx/Show/%27%26%24%23funky%2A%2A%21%21~%27%27%20page
Но даже если это похоже на хороший действительный URL-адрес IIS еще дает мне
Ошибка HTTP 400.0 - неверный запрос ASP.NET обнаружил недопустимые символы в URL-адресе.
B, похоже, полностью не устарел. – marcog
@marcog - это то, о чем я тоже думал, но его результат дает: PageID = HttpUtility.UrlEncode (PageID); где PageID = "'& $ # funky ** !! ~' 'page" – Justin808
'% 27% 26% 24% 23funky% 2A% 2A% 21% 21% 7E% 27% 27% 20page' то, что должно быть , Я понятия не имею, что может заставить его не работать. – marcog