it-swarm.com.de

Kodierungsparameter für eine URL

Ich habe eine Silverlight-Anwendung, die eine URL erstellt. Diese URL ist ein Aufruf an einen REST-basierten Dienst. Dieser Dienst erwartet einen einzelnen Parameter, der einen Standort darstellt. Der Ort ist in der Form "Stadt, Staat". Um diese URL zu erstellen, rufe ich den folgenden Code auf:

string url = "http://www.domain.com/myService.svc/";
url += HttpUtility.UrlEncode(locationTextBox.Text);

Wenn ein Benutzer "chicago, il" in locationTextBox eingibt, sieht das Ergebnis folgendermaßen aus:

http://www.domain.com/myService.svc/chicago%2c+il

In Wirklichkeit hatte ich damit gerechnet, dass die URL so aussieht.

http://www.domain.com/myService.svc/chicago,%20il

Beim Testen meines Dienstes über die Browser-URL funktioniert der von mir erwartete Dienst. Die generierte URL funktioniert jedoch nicht. Was mache ich falsch?

37
user70192

Ich würde Uri . EscapeDataString empfehlen, anstatt die HttpUtility - Funktionen zu verwenden. Siehe Diskussion in Server.UrlEncode vs. HttpUtility.UrlEncode

64
Alexei Levenkov

Versuchen Sie, die UrlPathEncode () - Methode zu verwenden Sehen Sie sich die Anmerkungen an: http://msdn.Microsoft.com/de-de/library/h10z5byc.aspx

Zitat:

Sie können eine URL mit .__ codieren. UrlEncode () -Methode oder die UrlPathEncode () - Methode. Die Methoden liefern unterschiedliche Ergebnisse. Das Die UrlEncode () -Methode konvertiert jeden Bereich Zeichen zu einem Pluszeichen (+). Das Die UrlPathEncode () -Methode konvertiert jedes Leerzeichen in die Zeichenfolge "% 20", was einen Raum in .__ darstellt. Hexadezimalschreibweise. Verwenden Sie die UrlPathEncode () -Methode beim Kodieren von der Pfadteil einer URL, um garantieren eine konsistente dekodierte URL, unabhängig von welcher Plattform oder Browser führt die Dekodierung durch.

6
JochemKempe

Die sicherste Wette ist die Verwendung der AntiXss-Bibliothek. Es gibt mehr Standard- (und sichere) Versionen zum Kodieren von Inhalten für verschiedene Zwecke (wie Url-Kodierungen, Html- und HtmlAttribute-Kodierungen usw.). Es gibt die alte Version 3.1 zum Download von der MS-Site ( http://www.Microsoft.com/downloads/details.aspx?FamilyId=051ee83c-5ccf-48ed-8463-02f56a6bfc09 ) arbeiten mit älteren .NET-Versionen und der neuen unter http://wpl.codeplex.com/

0
Ken Egozi