虽然我们可以理解我们可以使用MaxRequestLength和MaxAllowedContentLength(here)在两个不同的级别上配置IIS基本相同的东西,但很明显IIS实际上接受了(直到它等待它)。 s下载了整个请求(可能是几百MB),然后才决定必须拒绝或过滤掉它。
可以说,可以查询请求大小的标头或标头是否不准确(长度设置为小于实际请求大小的值) - 一旦超过限制就退出。
如果重要 - 我正在使用HttpHandler。
是否可以将IIS配置为这样?
答案 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。
我无法确认您的请求不会被下载,但我认为您不能早点这样做。
答案 1 :(得分:0)
好吧,至少我已经尝试过了。看来这是您通过设计IIS无法做到的事情之一。