C # URLDecode превращает% 5C в \\\\ вместо \ - PullRequest
0 голосов
/ 04 марта 2009

У меня есть метод веб-службы, который принимает сетевой логин (строку) в качестве параметра. Логин - это URL, кодированный из JavaScript, поэтому DOMAIN \ USERNAME кодируется в DOMAIN% 5CUSERNAME. Когда я использую HttpUtility.URLDecode в строке, он экранирует обратную косую черту и дает мне DOMAIN \\ USERNAME. Я пытаюсь передать это провайдеру профиля (который ожидает только одну обратную косую черту) и ничего не получаю.

Я пытался сделать string.Replace (), а также RegEx.Replace () и не могу избавиться от второго обратного слэша.

Кто-нибудь знает способ решить эту проблему? На данный момент это просто подтверждение концепции, так как я работаю над ней, так как я не фанат сетевого имени пользователя, публикуемого в качестве параметра; Тем не менее, мне все еще интересно узнать, как обойти эту проблему. Есть ли другая схема кодирования, которую я могу / должен использовать на стороне JavaScript, если я не могу решить это из C #?

1 Ответ

8 голосов
/ 04 марта 2009

На самом деле это не превращает его в \\. Вот так это выглядит под отладчиком. Отладчик показывает вам строковый литерал, который вам нужно использовать, если вы хотите поместить его в код. Если вы распечатаете строку на консоли, вы увидите, что все в порядке.

using System;
using System.Web;

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

        Console.WriteLine(decoded);
    }
}

Выход:

DOMAIN\USERNAME
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...