2016-10-31 4 views
0

Я получил запрос на URL такого вида: https://xxx/test/%81IIS 8.5 400 Bad Request - Неправильный URL

Это приводит к 400 Bad Request - Недопустимый URL

Я попытался установить в web.config:

<httpRuntime requestValidationMode="2.0" relaxedUrlToFileSystemMapping="true" requestPathInvalidCharacters=""/> 

Но это не поможет.

Я также попытался использовать пользовательский запрос валидатора:

<httpRuntime requestValidationType="MyNamespace.CustomRequestValidation"/> 

Но IIS возвращает 400 перед использованием пользовательского валидатора.

Что еще я могу сделать, чтобы IIS принял этот URL?

спасибо.

ответ

1

В соответствии с https://www.iis.net/learn/troubleshoot/diagnosing-http-errors/troubleshooting-http-400-errors-in-iis основная проблема HTTP 400 является то, что клиент послал запрос в IIS, что нарушает одно или более правил, которые HTTP.sys является меры принуждения к исполнению.

Http.sys параметры реестра для Windows, которые dercribed здесь: https://support.microsoft.com/en-us/kb/820129

Итак, в моем случае проблема была решена путем установки этих ключей в HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ HTTP \ Parameters, как IIS машины:

AllowRestrictedChars = 1 
EnableNonUTF8 = 1 

После применения этих изменений в реестре машины IIS должны быть перезапущен