ValidateRequest = «ложь» и проблема .NET 4 - PullRequest
2 голосов
/ 19 июня 2010

.NET 4 сломался ValidateRequest=“false” по какой-то причине.

Решение - просто поместите <httpRuntime requestValidationMode="2.0" /> в ваш файл web.config.

Проблема этого решения в том, что оно нарушает поддержку .NET 2.0!

IIS отказывается принимать неизвестные атрибуты в web.config.Кроме того, мне не нравится природа "все или ничего".

Могу ли я установить requestValidationMode (или каким-либо другим способом отключить проверку запроса) для отдельной страницы, которая нуждается в этом?Без нарушения обратной совместимости web.config с 2.0?

Ответы [ 5 ]

1 голос
/ 03 июля 2012

Я могу подтвердить, что подход добавления validateRequest = "true" в файл web.config работает, и он изумителен!

Использование этого делает директивы уровня страницы снова корректно, и это устраняет необходимостьчтобы изменить поведение обратно в режим ASP.Net2.0.

Странно, что это имеет какой-либо эффект, поскольку проверка запросов обычно в любом случае включена по умолчанию, но не имеет значения.

0 голосов
/ 08 июля 2018

если вы используете .net4, добавьте эту строку в веб-конфигурацию

<pages validateRequest="false">

, и вам не нужно будет использовать <httpRuntime requestValidationMode="2.0" /> вообще

0 голосов
/ 20 июня 2010

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

0 голосов
/ 10 ноября 2010

Я нашел лучший способ, я думаю. Мне не понравилась возможность вернуться к настройке 2.0 в то время как в 4.0. Мне также не нравится опция «все или ничего».

Я поиграл с несколькими вещами, и у меня, по крайней мере, есть практическое решение. По умолчанию все страницы проверяются независимо от директивы страницы "ValidateRequest =" false "

Я нашел, где сделать этот параметр в файле web.config в разделе system.web под названием pages. (http://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.validaterequest.aspx)

Если атрибут validateRequest добавлен в элемент pages, вы можете управлять проверкой всего сайта.

Но я наткнулся на счастливую вещь, тестируя это. Я не мог найти документацию для этого, но вот что я испытал. По умолчанию валидация включена везде, но если я установлю validateRequest на «true», мои отдельные директивы страницы будут работать так же, как и в 2.0. Я не знаю почему, но я счастлив.

Итак, в заключение ... Установите для validateRequest значение true. Как здесь.

Тогда любые директивы страницы работают для этой проверки.

0 голосов
/ 19 июня 2010

Я просто поместил это в свой web.config в узле system.web.

<httpRuntime requestValidationMode="2.0" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...