IIS 8.5 400错误请求 - 无效的URL

时间:2016-10-31 16:24:30

标签: asp.net iis iis-8.5

我已收到此类网址的请求: https://xxx/test/%81

这导致400 Bad Request - Invalid URL

我尝试在web.config中设置:

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

但它没有帮助。

我还尝试使用自定义请求验证器:

<httpRuntime requestValidationType="MyNamespace.CustomRequestValidation"/>

但是IIS在使用自定义验证器之前返回400。

我还能做些什么来让IIS接受这个URL?

谢谢。

1 个答案:

答案 0 :(得分:2)

根据 https://www.iis.net/learn/troubleshoot/diagnosing-http-errors/troubleshooting-http-400-errors-in-iis HTTP 400的根本问题是客户端向IIS发送了一个请求,该请求违反了 HTTP.sys 正在执行的一个或多个规则。

Windows的Http.sys注册表设置如下: https://support.microsoft.com/en-us/kb/820129

因此,在我的情况下,通过在HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ HTTP \ Parameters下创建以下DWORD值作为IIS机器来解决问题:

AllowRestrictedChars = 1
EnableNonUTF8 = 1

将这些更改应用于注册表后,必须重新启动IIS计算机