5 ответов:
найдено решение на странице ошибки. Просто нужно добавить requestValidationMode="2.0"
<system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime requestValidationMode="2.0" /> </system.web>информация MSDN:HttpRuntimeSection.RequestValidationMode Собственность
есть способ вернуть проверку на 2.0 для одной страницы. Просто добавьте код ниже в свой веб-сайт.config:
<configuration> <location path="XX/YY"> <system.web> <httpRuntime requestValidationMode="2.0" /> </system.web> </location> ... the rest of your configuration ... </configuration>
Я знаю, это старый вопрос, но если вы столкнулись с этой проблемой в MVC 3, то вы можете украсить свой
ActionMethodС[ValidateInput(false)]и просто выключите проверку запроса для одногоActionMethod, что очень удобно. И вам не нужно вносить какие-либо изменения кweb.configфайл, так что вы все еще можете использовать проверку запросов .NET 4 везде.например
[ValidateInput(false)] public ActionMethod Edit(int id, string value) { // Do your own checking of value since it could contain XSS stuff! return View(); }
это работает без изменения режима проверки.
вы должны использовать
System.Web.Helpers.Validation.Unvalidatedпомощник отSystem.Web.WebPages.dll. Он собирается вернуть aUnvalidatedRequestValuesобъект, который позволяет получить доступ к форме и строке без проверки.например,
var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey"));работает для меня для MVC3 и .NET 4.
обратите внимание, что другой подход заключается в том, чтобы сохранить поведение проверки 4.0, но определить свой собственный класс, производный от
RequestValidatorи<httpRuntime requestValidationType="YourNamespace.YourValidator" />(где
YourNamespace.YourValidatorхорошо, вы должны быть в состоянии догадаться...)таким образом, вы сохраняете преимущества поведения 4.0 s (в частности, что проверка происходит раньше при обработке), а также разрешаете запросы, которые вам нужно пропустить, через.
Comments