2

虽然我们可以理解我们可以使用 MaxRequestLength 和 MaxAllowedContentLength(此处)在两个不同级别上为基本相同的事情配置 IIS,但很明显 IIS 在它决定之前实际上接受(等待它被下载)整个请求(可能是数百 MB)它必须被拒绝或过滤掉。

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

如果重要的话 - 我正在研究一个 HttpHandler。

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

4

2 回答 2

1

您要做的是基于标头内容的请求过滤。

一个HttpHandler离 HTTP 栈太远了,不能做这样的事情。在这一步,我确定请求已被下载和映射。

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

在 IIS 7 和集成模式下,可以在 IIS 管道中声明 ASP.NET 模块

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

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

我不能肯定你的请求不会被下载,但我认为你不能早点下载。

IIS架构简介

IIS 7.0 的 ASP.NET 应用程序生命周期概述

于 2012-09-07T14:32:42.290 回答
0

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

于 2012-10-06T13:49:42.593 回答