2016-10-13 3 views
4

Класс HttpWebRequest автоматически кодирует параметр URL? Я создал HttpWebRequest с URL-адресом «http://test.com/124?param=%2Ea». Когда я фиксирую трассировку скрипача, я вижу, что запрос HTTP-запроса становится «http://test.com/124?param=.a», то есть «% 2E» становится «.»..net HttpWebRequest URL-кодировка в параметрах url

Я попытался создать отладчик в моем коде, и я уверен, что URL я прошел в HttpWebRequest является «http://test.com/124?param=%2Ea» Вы знаете, если HttpWebRequest делает это автоматически? И как я могу отключить его?

+0

не может воспроизвести, что, если я делаю запрос с% 2E я вижу это в скрипаче, и если я просто использую "." Я также вижу это. Так или иначе "." разрешено в url, поэтому, если ваш backend расшифровывает параметр url, это не имеет значения, если вы используете «.». или% 2E. Какова ваша проблема в целом? – Esko

ответ

0

Проблема заключается в том, что, хотя %2e является эквивалентом url ., вы хотите, чтобы URL-адрес запроса оставался точно таким же, как вы его набрали, не так ли?

Похоже, Uri не допускает сбегающие косые черты / или точки .. По-видимому, это для обратной совместимости. Вы можете попробовать обходную указан на this SO answer, который обеспечивается с помощью раствора самого МСА на this bug report on MS Connect

Они предлагают поместить следующий код в app.config или web.config файле:

<uri> 
    <schemeSettings> 
     <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes" /> 
    </schemeSettings> 
</uri> 
+0

Сообщите мне, если это сработало или нет. – fmello

Смежные вопросы