<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="&lt;,&gt;,*,%,&amp;,:,\" />
<!-- the unescaped characters are: < > * % & : \  -->

Удалите символы, которые вы хотите авторизовать, и запрос будет работать.

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