Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net IIS“;IP地址和域限制”;拒绝不阻止返回400状态的请求的条目_Asp.net_Iis - Fatal编程技术网

Asp.net IIS“;IP地址和域限制”;拒绝不阻止返回400状态的请求的条目

Asp.net IIS“;IP地址和域限制”;拒绝不阻止返回400状态的请求的条目,asp.net,iis,Asp.net,Iis,我的web服务器是带有IIS 8.5的Windows server 2012 R2标准服务器 我一直收到来自特定ip地址范围的错误。错误为“潜在危险的请求。从客户端检测到路径值。”(http状态代码为400)。作为响应,我为这些ip地址添加了ip地址拒绝条目。我首先将拒绝条目添加到特定的网站,但继续从ip地址接收错误。然后我将拒绝条目移动到应用程序文件中,仍然收到错误 此时,我假设发生了其他事情,所以我为本地计算机设置了一个拒绝条目。在常规http请求中,我收到403,但当我发出“错误请求”(状

我的web服务器是带有IIS 8.5的Windows server 2012 R2标准服务器

我一直收到来自特定ip地址范围的错误。错误为“潜在危险的请求。从客户端检测到路径值。”(http状态代码为400)。作为响应,我为这些ip地址添加了ip地址拒绝条目。我首先将拒绝条目添加到特定的网站,但继续从ip地址接收错误。然后我将拒绝条目移动到应用程序文件中,仍然收到错误

此时,我假设发生了其他事情,所以我为本地计算机设置了一个拒绝条目。在常规http请求中,我收到403,但当我发出“错误请求”(状态400)时,我收到的是400状态,而不是403状态

将400状态描述为:

由于请求中存在问题,Http.sys文件阻止IIS 7.0、IIS 7.5和IIS 8.0处理该请求

并显示Http.sys是接收请求的第一步

不过我有一些问题

1) 在处理403的过程中,我找不到处理的位置。我现在假设这发生在400之后,但我不确定

2) 上面的第二个链接(IIS体系结构简介)还指出:

启动时,WAS从ApplicationHost.config文件读取某些信息,并将该信息传递给服务器上的侦听器适配器。侦听器适配器是在WAS和协议侦听器(如HTTP.sys)之间建立通信的组件。一旦侦听器适配器接收到配置信息,它们将配置相关的协议侦听器,并准备侦听器以侦听请求

这让我相信Http.sys会从application.config文件中引入拒绝条目并阻止请求

无论如何,对我来说,拒绝请求似乎是第一位的,但显然不是这样(除非我的设置有问题)


有什么想法或链接可以消除我对这种情况的无知吗?

我最近试图使用IIS 8.5中的IP地址和域限制功能来阻止某些IP地址访问网站,我遇到了与您在类似服务器设置中描述的相同问题。在我的例子中,IIS可能阻止了来自我列出的IP地址的有效web请求,但我仍然看到错误请求(400个错误)出现在我的日志中,这意味着请求通过IIS进入ASP.NET。我不知道为什么IIS 8.5没有阻止错误的请求。这种行为让我特别困惑,因为我觉得早期版本的IIS确实阻止了所有请求

我希望我能有一个更好的答案来解释为什么IIS 8.5会以这种方式运行,但是这个问题的另一个解决方案是使用Windows防火墙来阻止问题的IP地址。您可以添加自定义规则,阻止特定IP地址或范围的TCP流量到达web服务器。这种方法的一个好处是,您可以更新列表,而不会导致应用程序池循环,这在您更新IIS中的允许/拒绝规则时发生


要添加防火墙规则,可以使用
wf.msc
。您应该通过添加
自定义规则来更新
入站规则
,以阻止本地端口
80
443
(或web服务器运行的任何端口)上的
TCP
流量。最好先在非生产服务器上测试规则,以确保规则设置正确。

这从未奏效。这是IIS8.x中一个非常有名的bug。防火墙规则是阻止IP地址的唯一方法。微软并没有动力去解决这一问题,因为这将使他们无法获得那些强大的Azure合同。