ASP.NET HttpHandler可以处理http 400 - 错误请求吗?

时间:2008-12-04 21:58:43

标签: c# asp.net http iis-7 httphandler

我们有一个HttpHandler,可直接处理来自自定义客户端软件的HTTP上的二进制帖子。客户端软件偶尔发送数据,导致IIS 7响应400 - 错误请求。由于“400 Bad Request”的特殊之处在于HTTP.SYS在内核模式下透明地处理它而不通知用户模式,因此不会引发任何错误在ASP.NET中处理。是否有可能在ASP.NET中捕获此http 400,以便我可以在这些方案中将特定数据写入Response流?重定向到另一个页面不是一个选项,因为它需要在当前的请求/响应中。

3 个答案:

答案 0 :(得分:2)

如果您知道导致400的原因,那么您可以通过注册表自定义http.sys的行为来处理它:

http://support.microsoft.com/kb/820129

但是,您应该意识到这样做有潜在的安全性和性能后果。

另一个选择是在IIS之前使用过滤代理,从而在它进一步发送之前捕获请求。

答案 1 :(得分:2)

我会要求他们修复自定义客户端软件。向他们提供显示失败请求的报告。如果你能够运行Wireshark之​​类的嗅探器,并且如果他们认为问题与他们的软件无关,则将数据包发送给他们。

答案 2 :(得分:1)

如果您的自定义客户端导致IIS触发HTTP 400,则可能存在缺陷,并且未按照标准提交有效的HTTP请求。如果你可以改变客户,那将是正确的做法。否则,您正在使用的不是HTTP,而IIS旨在处理HTTP请求。因此,您应该为自己的协议运行自定义服务器(这是一种非标准的HTTP类似的东西)。

不建议使用IIS / ASP.NET来处理这样的请求,因为它可能会导致一些奇怪的意外事情发生。

相关问题