Warum geben die folgenden URLs mir die IIS-Fehler unter:Fehler 400/404 - HttpUtility.UrlEncode nicht vollständige Zeichenfolge codiert?
A) http://192.168.1.96/cms/View.aspx/Show/Small+test '
A2) http://192.168.1.96/cms/View.aspx/Show/Small%20test' < - das funktioniert, aber ist nicht das Ergebnis von HttpUtility.UrlEncode()
B) http://192.168.1.96/cms/View.aspx/Show/ '% 26 $% 23funky ** !! ~' '+ page
Fehler für A:
HTTP Error 404.11 - Not Found
The request filtering module is configured to deny a request that contains a double escape sequence.
Fehler für B:
HTTP Error 400.0 - Bad Request
ASP.NET detected invalid characters in the URL.
Der letzte Teil der URL nach/Show/ist das Ergebnis, nachdem der Text durch HttpUtility.UrlEncode gesendet wird() so laut Microsoft ist es URL richtig kodiert.
Wenn ich HttpUtility.UrlPathEncode() statt HttpUtility.UrlEncode() benutze, bekomme ich die A2-Ergebnisse. Aber B endet aussehen wie:
http://192.168.1.96/TVCMS-CVJZ/cms/View.aspx/Show/ '& $ # flippige ** !! ~' '% 20page
die noch ist falsch. Kann Microsoft die URL überhaupt verschlüsseln? Gibt es eine Funktion, die jemand geschrieben hat, um es richtig zu machen?
EDIT:
ich meine eigenen Encoder geschrieben habe:
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;
}
Die Funktion arbeitet mit A2 oben ganz gut das Ergebnis für B ist:
http://192.168.1.96/cms/View.aspx/Show/%27%26%24%23funky%2A%2A%21%21~%27%27%20page
Aber auch wenn das wie eine schöne gültige URL aussieht IIS immer noch gibt mir eine
HTTP-Fehler 400.0 - ungültige Anforderung ASP.NET erkannte ungültige Zeichen in der URL.
B scheint nicht vollständig urlencodiert zu sein. – marcog
@marcog - das ist, was ich auch dachte, aber das Ergebnis ergibt sich aus: PageID = HttpUtility.UrlEncode (PageID); where PageID = "'& $ # funky ** !! ~' 'Seite" – Justin808
'% 27% 26% 24% 23funky% 2A% 2A% 21% 21% 7E% 27% 27% 20Seite' ist, was es sein sollte . Ich habe keine Ahnung, was dazu führen könnte, dass es nicht funktioniert. – marcog