2009-03-03 6 views
0

Ich habe eine Web-Service-Methode, die eine Netzwerkanmeldung (String) als Parameter akzeptiert. Der Login ist URL-codiert von JavaScript, so dass die DOMÄNE \ BENUTZERNAME in DOMAIN% 5CUSERNAME codiert ist. Wenn ich den HttpUtility.URLDecode für die Zeichenfolge verwende, wird der Backslash ignoriert und DOMAIN \\ USERNAME ausgegeben. Ich versuche, dies an einen Profilanbieter zu übergeben (der nur einen einzigen Backslash erwartet) und bekomme nichts.C# URLDecode verwandelt% 5C in \ anstelle von

Ich habe versucht, string.Replace() sowie RegEx.Replace() zu tun und kann nicht den 2. Backslash loswerden.

Kennt jemand eine Möglichkeit, dies zu lösen? Fürs Erste ist dies nur ein Beweis des Konzepts, da ich daran arbeite, da ich kein Fan des Netzwerk-Benutzernamens bin, der als Parameter veröffentlicht wird; Ich bin jedoch immer noch neugierig darauf, einen Weg zu diesem Thema zu finden. Gibt es ein anderes Codierungsschema, das ich auf der JavaScript-Seite verwenden kann/sollte, wenn ich das nicht aus C# lösen kann?

Antwort

8

Es macht es nicht tatsächlich in \\. So sieht es unter dem Debugger aus. Der Debugger zeigt Ihnen das String-Literal an, das Sie verwenden müssen, wenn Sie es in Code einfügen möchten. Wenn Sie die Zeichenfolge auf der Konsole ausgeben, sehen Sie, dass es in Ordnung ist.

using System; 
using System.Web; 

class Test 
{ 
    static void Main() 
    { 
     string url = "DOMAIN%5CUSERNAME"; 
     string decoded = HttpUtility.UrlDecode(url); 

     Console.WriteLine(decoded); 
    } 
} 

Ausgang:

DOMAIN\USERNAME 
+0

t -27 Sekunden :( –

Verwandte Themen