Потенциально опасный запрос.Значение пути …. содержит только буквенно-цифровые символы и символ подчеркивания?

#asp.net #iis

#asp.net #iis

Вопрос:

Я в курсе обычных причин этой проблемы, но что не так с этим URL?

http://res02.img.mem.com/individual/assets/2/2/7/1/2291722/20081027_112706_07.jpg?width=100

Большую часть времени запрос, кажется, выполняется правильно, но каждые несколько часов сервер регистрирует несколько (1-3) из этих ошибок и начинает возвращать ошибку 503 с каждым запросом.

Я бы не возражал против предупреждений, но это хронологически совпадает со сбоем сервера. Приложение чрезвычайно простое, просто возвращает и изменяет размер изображений из SAN. Другой сервер с тем же программным обеспечением работает правильно. (и указанное программное обеспечение поддерживает тысячи других веб-сайтов, многие из которых работают на фермах серверов).

Разница в том, что этот сервер имеет FNCMode=2 для предотвращения ASP.NET от создания миллионов наблюдателей файловой системы по всей сети до мониторинга SAN, в котором находится приложение (и изображения). (Чтобы избежать ошибок BIOS Command Limit reached).

Я даже проанализировал аварийный дамп с WinDbg и SOS безрезультатно.

Идеи? Я знаю, что я представляю здесь потенциально две отдельные проблемы, но они хронологически связаны.

 A potentially dangerous Request.Path value was detected from the client (?).
   at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
   at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

Request information: 
    Request URL: http://res02.img.mem.com/individual/assets/2/2/7/1/2291722/20081027_112706_07.jpg?width=100 
    Request Path: /individual/assets/2/2/7/1/2291722/20081027_112706_07.jpg?width=100
    User host address: 174.37.137.143 
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: IIS APPPOOLASP.NET v4.0 

Thread information: 
    Thread ID: 32 
    Thread account name: IIS APPPOOLASP.NET v4.0 
    Is impersonating: False 
    Stack trace:    at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
   at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)
  

Ответ №1:

Оказывается, проблемы не были связаны. В нескольких URL-адресах запросов вопросительный знак был закодирован в URL, в результате чего он анализировался как часть пути вместо строки запроса. После декодирования URL запрос был перехвачен проверкой запроса.

Проблемы с сбоями, похоже, связаны с ошибкой потоковой передачи IIS, но мы все еще отлаживаем это с помощью MS.