IIS可以通过标头值拒绝请求而不是等待整个请求上传吗?

时间:2012-09-07 07:34:08

标签: .net iis http-headers ashx http-request

虽然我们可以理解我们可以使用MaxRequestLength和MaxAllowedContentLength(here)在两个不同的级别上配置IIS基本相同的东西,但很明显IIS实际上接受了(直到它等待它)。 s下载了整个请求(可能是几百MB),然后才决定必须拒绝或过滤掉它。

可以说,可以查询请求大小的标头或标头是否不准确(长度设置为小于实际请求大小的值) - 一旦超过限制就退出。

如果重要 - 我正在使用HttpHandler。

是否可以将IIS配置为这样?

2 个答案:

答案 0 :(得分:1)

您要做的是根据标题内容请求过滤。

HttpHandler 离HTTP堆栈太远,无法做到这一点。在此步骤中,我确定已下载并映射了请求。

它可以处理 HttpModule (Init)和HttpApplication事件,但在ASP.NET应用程序中,请求也必须在处理之前完全下载。

在IIS 7和集成模式中,ASP.NET modules can be declared in the IIS pipeline

这是进行请求过滤的好方法。无论如何,我非常确定IIS在将请求映射到任何模块/处理程序之前已经下载了该请求。

您可以使用Request Filtering在请求处理管道中执行此操作。 IIS 7.5带来了Scan headers Fitlering Rules

我无法确认您的请求不会被下载,但我认为您不能早点这样做。

Introduction to IIS Architecture

ASP.NET Application Life Cycle Overview for IIS 7.0

答案 1 :(得分:0)

好吧,至少我已经尝试过了。看来这是您通过设计IIS无法做到的事情之一。