<pages validateRequest = "false" /> и <httpRuntime requestValidationMode = "2.0" /> не работают
Я унаследовал приложение MVC asp.net, используя Framework 4.0.
Я получаю страшную ошибку "потенциально опасное значение Request.Form было обнаружено от клиента", и все мои исследования заставляют меня поверить, что это должно это исправить:
<system.web>
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
Тем не менее, я добавил это в свой web.config и все еще получаю ошибку. Я нахожусь в конце моей веревки здесь, что мне не хватает?
3 ответа
В дополнение к тому, что вы сделали, вы также должны украсить свои методы ValidateInput
приписывать.
[ValidateInput(false)]
public ActionResult MyActionMethod(string myParameter)
{
// Method implementation goes here...
}
Однако существует альтернатива: вы можете реализовать свой собственный валидатор запросов и связать его с вашим web.config, если вы хотите обрабатывать валидацию для всего вашего сайта. Посмотрите на этот пост в блоге о том, как полностью его реализовать.
По сути, создайте класс, который наследует от RequestValidator
и затем подключите его к web.config.
<httpRuntime requestValidationType=”Globals.CustomRequestValidation”/>
Надеюсь, это поможет!
Возьми другой подход. в httpRuntime
, укажите на свой пользовательский класс проверки. Таким образом, вы получаете полный контроль над входящими запросами, так как валидатор запускается при каждом отдельном запросе в начале конвейера обработки.
В частности, если вы реализуете свой валидатор для возврата true
, вы будете безоговорочно принимать все входящие запросы.
http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx
Самый простой способ - удалить нужные символы из системы проверки.
Здесь requestPathInvalidCharacters
атрибут из httpRuntime
элемент со значением по умолчанию.
<httpRuntime requestPathInvalidCharacters="<,>,*,%,&,:,\" />
<!-- the unescaped characters are: < > * % & : \ -->
Удалите символы, которые вы хотите авторизовать, и запрос будет работать.