Атрибут ValidateInput не работает в ASP.NET MVC - PullRequest
17 голосов
/ 22 сентября 2009

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

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

Ответы [ 4 ]

32 голосов
/ 20 апреля 2010

При использовании 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 работать должным образом.

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

7 голосов
/ 22 сентября 2009

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

1 голос
/ 07 мая 2010

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

0 голосов
/ 08 декабря 2010

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

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

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