Почему ASP.NET 4 / IIS7 html-кодирует мою строку запроса? - PullRequest
1 голос
/ 06 января 2012

Мы переключили одну из наших тестовых сред на использование .NET 4 на IIS7. Производство использует .NET 2.

Определенные URL, такие как

http://www.example.com/page.aspx?param1=<foo>&param2=<foo>

Не попадает в наш код stringindex, который ищет <или> в Request.Url.ToString (). Зачем? Потому что они показываются как &lt;foo&gt;, когда мы проверяем. Это работало в .NET 2.

Что происходит?

ПРИМЕЧАНИЕ: в форматировании ошибок нет. Я действительно имею в виду HTML закодировать.

1 Ответ

0 голосов
/ 06 января 2012

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

HttpServerUtility.UrlDecode(Request.QueryString);

http://msdn.microsoft.com/en-us/library/6196h3wt.aspx:

Кодировка URL гарантирует, что все браузеры будут правильно передавать текст в строках URL.Такие символы, как знак вопроса (?), Знак амперсанда (&), знак косой черты (/) и пробелы, могут быть усечены или повреждены некоторыми браузерами.В результате эти символы должны быть закодированы в тегах или в строках запроса, где строки могут быть повторно отправлены браузером в строке запроса.

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