Подтвердить что ты не робот

Параметры кодирования URL-адреса

У меня есть приложение Silverlight, которое создает URL. Этот URL-адрес является вызовом службы на основе REST. Эта служба ожидает один параметр, который представляет местоположение. Расположение в форме "город, штат". Чтобы создать этот URL, я вызываю следующий код:

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

Если пользователь вводит "chicago, il" в locationTextBox, результат будет выглядеть следующим образом:

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

На самом деле я ожидал, что URL будет выглядеть так:

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

При тестировании моего сервиса по URL-адресу браузера работает ожидаемый. Однако созданный URL-адрес не работает. Что я делаю неправильно?

4b9b3361

Ответ 2

Попробуйте использовать метод UrlPathEncode(). Просмотрите замечания по адресу: http://msdn.microsoft.com/en-us/library/h10z5byc.aspx

Цитата:

Вы можете кодировать URL-адрес, используя UrlEncode() или UrlPathEncode(). Однако методы возвращают разные результаты. Метод UrlEncode() преобразует каждое пространство символ с символом плюса (+). Метод UrlPathEncode() преобразует каждый пробел в строку "%20", который представляет собой пространство в шестнадцатеричное обозначение. Использовать UrlPathEncode() при кодировании часть пути URL-адреса, чтобы гарантируют согласованный декодированный URL, независимо от того, какая платформа или браузер выполняет декодирование.

Ответ 3

Самая безопасная ставка - использовать библиотеку AntiXss. Он имеет более стандартные (и безопасные) версии для кодирования содержимого для различных целей (например, кодировки Url, кодировки Html и HtmlAttribute и т.д.). есть старая версия 3.1, доступная для загрузки с сайта MS (http://www.microsoft.com/downloads/details.aspx?FamilyId=051ee83c-5ccf-48ed-8463-02f56a6bfc09), которая будет работать со старыми версиями .NET, а новая в http://wpl.codeplex.com/