为什么 IIS7/7.5 中的网站默认启用 ASP.NET ISAPI 过滤器?

And*_*ber 7 iis-7 asp.net iis-7.5 isapi-filters

编辑:由于答案的潜在的关键性质的一些问题我下面,我将这种强烈的警告:不要删除我说的这里,除非你确切地知道它是做什么的过滤器; 您的应用程序的安全性可能会受到威胁。


我刚刚注意到我为 IIS7.5 使用配置的新 Win 2008R2 服务器在根配置中默认启用了 ASP.NET 的 ISAPI 过滤器,因此在所有站点上。我还检查了我可以访问的一台 2008 和一台 2008R2 服务器,它们也有同样的事情。ASP.NET ISAPI 过滤器

我的理解是,只有在经典模式下运行 Web 应用程序时才需要这些;我的应用程序都在集成模式下运行。我从一个 ASP.NET 站点中删除了所有与 ASP.NET 相关的过滤器,我要迁移到新服务器,它似乎没有给应用程序造成任何问题。

事实上,在我删除 v2 应用程序上的 32 位 v4 条目之前,它确实引起了问题。但是后来我将它们全部删除了,因为我认为根本不需要它们。

所以我的主要问题是:默认情况下,它们在根配置中的唯一原因是为了支持经典模式应用程序,这需要它们运行吗?

次要问题:我不应该在所有以集成模式运行的站点上删除它们,假设它们至少什么都不做,最坏的情况是通过现有资源(或更糟的是,实际处理请求!)

额外的问题:你认为如果我现在重新审视我在前两台服务器上的网站内容目录的文件权限方案,我会因为发现上述内容而感到惊讶或注意到一些变化吗?


编辑:请注意,删除 ISAPI 过滤器的 aspnet_filter.dll 条目实际上可能很危险。下面页面 URL 中 IsapiFilterModule 上的条目指出受保护内容的过滤是通过此过滤器完成的。例如; .config .cs.vb文件。 http://learn.iis.net/page.aspx/121/iis-7-modules-overview/

Tri*_*anK 4

我最初也这么认为,但事实并非如此——过滤器实际上在两种模式下都提供了一些功能——例如,无 cookie 会话支持。

将 ISAPI 过滤器行为与 ISAPI 扩展行为分开 - 扩展是集成模式所取消的。