Ядро Asp.Net QueryHelpers AddQueryString не кодирует - PullRequest
0 голосов
/ 03 апреля 2019

Один из параметров строки моего запроса имеет следующее значение:

name: ”” [abc] ””

, которое добавляется к объекту Dictionary и являетсяиспользуется следующим кодом:

var newUrl = QueryHelpers.AddQueryString(url, myDictionary);

Когда я развертываю этот код на одном компьютере, он работает правильно, и newUrl становится правильно закодированным:

api / latest / items? property =имя% 3A% 22% 22% 5Babc% 5D% 22% 22 * ​​1013 *

Однако тот же код при развертывании на другом сервере не работает, и полученный URL вообще не кодируется:

api / latest / items? Property = name: ”” [abc] ””

Есть ли причина, по которой в одном случае метод кодирует, а в другом - нет?(без изменений в коде, тот же исходный код, та же компиляция, но только для двух разных серверов - один работает, а другой нет)

1 Ответ

0 голосов
/ 04 апреля 2019

В одном проекте я столкнулся с той же проблемой, поэтому мы реализовали приведенный ниже фрагмент кода.что полезно для нас.вам нужно кодировать ваш URL-адрес во время и декодировать ваш URL-адрес при получении значения из него.

Логика шифрования:

BaseUrl + "Integration/Link?democode=" + Server.UrlEncode(Crypto.Encrypt(model.demoCode)) + "&requestsource=" + Server.UrlEncode(Crypto.Encrypt(model.demoSource));

Чтение значения из строки запроса:

 Dictionary<string, string> queryStringDic = GetDicFromQueryString(HttpUtility.ParseQueryString(HttpUtility.UrlDecode(Convert.ToString(HttpContext.Request.QueryString))));

Ниже общая функция свяжет ваше значение строки запроса в Словарь.

 private Dictionary<string, string> GetDicFromQueryString(NameValueCollection queryValue)
        {
            Dictionary<string, string> dictionaryKeyValue = null;
            if (queryValue != null && queryValue.AllKeys != null)
            {
                string value;
                dictionaryKeyValue = new Dictionary<string, string>();
                foreach (var k in queryValue.AllKeys)
                {
                    if (!string.IsNullOrWhiteSpace(k))
                    {
                        value = queryValue[k];
                        dictionaryKeyValue.TryAdd(k, string.IsNullOrWhiteSpace(value) ? value : value.Replace(' ', '+'));
                    }
                }
            }
            return dictionaryKeyValue;
        }

Надеюсь, это поможет вам.дайте мне знать, если у вас все еще есть проблема.

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