Странная ошибка ValidateInputIfRequiredByConfig - PullRequest
4 голосов
/ 14 ноября 2011

Я получаю случайное исключение, вызванное ValidateInputIfRequiredByConfig ().

У меня нет точного сообщения, поскольку наш сервер - pt-BR, поэтому сообщение об ошибке переведено.

IЗнайте, что эта ошибка может быть выдана, если пользователь вводит вредоносный код во входные данные, например.Но это не тот случай.

Я получаю это, запрашиваю несколько изображений.Ниже приведена информация от elmah.

HTTP_USER_AGENT:    GbPlugin
PATH_INFO:          /Content/images/BannerWelcome.jpg?1110311762734
PATH_TRANSLATED:    C:\inetpub\wwwroot\Content\images\BannerWelcome.jpg?1110311762734
REQUEST_METHOD:     GET
SCRIPT_NAME:        /Content/images/BannerWelcome.jpg?1110311762734

Приложение ASP.NET MVC 3, работающее в Windows 2008, IIS 7.5

РЕДАКТИРОВАТЬ:

Сообщение об исключении в pt-BR:

System.Web.HttpException
Um valor possivelmente perigoso Request.Path foi detectado no cliente (?).

System.Web.HttpException (0x80004005): Um valor possivelmente perigoso Request.Path foi detectado no cliente (?).
   em System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
   em System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

РЕДАКТИРОВАТЬ:

Сообщение об исключении на английском языке: «В клиентском Request.Path обнаружено потенциально опасное значение»

РЕДАКТИРОВАТЬ 2:

Я не могу воспроизвести эту ошибку.Насколько я знаю, это просто запрос к этому изображению.

Ответы [ 2 ]

4 голосов
/ 17 ноября 2011
<pages validateRequest="false" />

не работает в MVC3.

1) Вы должны явно указать [ValidateRequest (false)] на каждом контроллере или действии

2) Если вы используете .NET4, этонедостаточно, так как в .NET4 есть «ошибка / функция», которая не позволяет [ValidateInput (false)] работать.Вы также должны отключить requestPathInvalidCharacters, validateRequest и requestFiltering, используя requestValidationMode 2.0:

<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
2 голосов
/ 26 февраля 2014

Я сделал три изменения, чтобы решить эту проблему:

1)

<system.web>
    <httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
     </system.web>

2)

<system.webServer>      
    <security>  <requestFiltering allowDoubleEscaping="true" /> </security>
    </system.webServer>

3) <pages validateRequest="false" />

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