2009-03-03 7 views
0

J'ai une méthode de service Web qui prend un login de réseau (chaîne) en tant que paramètre. Le login est une URL codée à partir de JavaScript afin que DOMAIN \ USERNAME soit encodé dans DOMAIN% 5CUSERNAME. Lorsque j'utilise le code HttpUtility.URLDecode sur la chaîne, il échappe la barre oblique inverse et me donne DOMAIN \\ USERNAME. J'essaye de passer ceci dans un fournisseur de profil (qui attend juste une seule barre oblique inverse) et n'obtiens rien.C# URLDecode transforme% 5C en \\ au lieu de

J'ai essayé de faire string.Replace() ainsi que RegEx.Replace() et ne peut pas sembler se débarrasser de la 2ème barre oblique inverse.

Est-ce que quelqu'un connaît un moyen de résoudre ce problème? Pour l'instant, c'est juste une preuve de concept puisque je travaille dessus puisque je ne suis pas un fan du nom d'utilisateur de réseau étant affiché en tant que paramètre; Cependant, je suis toujours curieux de savoir comment contourner ce problème. Existe-t-il un schéma de codage différent que je peux/dois utiliser du côté JavaScript si je ne peux pas résoudre ce problème à partir de C#?

Répondre

8

Il ne le transforme pas réellement en \\. C'est juste à quoi ça ressemble sous le débogueur. Le débogueur vous montre le littéral de chaîne que vous auriez à utiliser si vous vouliez le mettre dans le code. Si vous imprimez la chaîne sur la console, vous verrez que tout va bien.

using System; 
using System.Web; 

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

     Console.WriteLine(decoded); 
    } 
} 

sortie:

DOMAIN\USERNAME 
+0

t -27 secondes :( –

Questions connexes