Атрибут ValidateInput не работает в ASP.NET MVC

Я пытаюсь обойти ошибку "потенциально опасное значение Request.Form", и мне не везет. Да, да, я прочитал все другие вопросы, связанные со Stackru, и ни один из них, похоже, не приблизил меня к ответу. я использую [ValidateInput(false)] на все связанные действия контроллера... и я проверял много раз. я использую ValidateRequest='false' во всех связанных представлениях ASPX.

Я использую ASP.NET MVC 2 Preview 1, но я не думаю, что это проблема, так как ошибка генерируется ниже в рамках; Page.ProcessRequest, чтобы быть точным. Я не вижу ничего, что я делаю неправильно, я даже поставил <page validateRequest='false'> в web.config и это тоже не решило.

4 ответа

В asp.net 4 вам также потребуется настроить режим проверки в файле web.config.

Установите следующее как ребенок <system.web> элемент:

<httpRuntime requestValidationMode="2.0"/>

Asp.Net 4 устанавливает requestValidationMode равным 4.0 по умолчанию, который говорит системе выполнить проверку запроса до фазы BeginRequst HTTP-запроса. Проверка произойдет до того, как система достигнет атрибута action, который скажет ей не проверять запрос, что сделает атрибут бесполезным. Установка requestValidationMode="2.0" вернется к поведению проверки запроса asp.net 2.0, позволяя атрибуту ValidateInput работать должным образом.

(спасибо Джиму - здесь принадлежат откровенные голоса)

Ну... ответил на мою проблему... виновник Html.RenderAction<T>, Если есть какие-либо вызовы к другим действиям в контексте запроса (например, из главной страницы или дочерних частей), эти действия также должны иметь [ValidateInput(false)] установить соответственно. Это кажется небольшой проблемой, хотя с MVC или с тем, как объект Page работает в ASP.NET, так как это действительно запутанная ошибка, которую нужно найти.

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

Обратите внимание, что эти предложения не устранят проблемы, вызванные ошибкой, возникающей, когда вы должны использовать [ValidateInput(false)] в сочетании с FormCollection.

См.: ASP.NET MVC 3 ValidateRequest (false) не работает с FormCollection

Другие вопросы по тегам