![为什么 IIS7/7.5 中的网站默认启用 ASP.NET ISAPI 过滤器?](https://linux22.com/image/543442/%E4%B8%BA%E4%BB%80%E4%B9%88%20IIS7%2F7.5%20%E4%B8%AD%E7%9A%84%E7%BD%91%E7%AB%99%E9%BB%98%E8%AE%A4%E5%90%AF%E7%94%A8%20ASP.NET%20ISAPI%20%E8%BF%87%E6%BB%A4%E5%99%A8%EF%BC%9F.png)
编辑:由于以下一些问题的答案可能具有批判性,因此我添加了以下强烈警告:不要不是删除我在这里提到的过滤器,除非您确切知道它在做什么;否则您的应用程序的安全性可能会受到威胁。
我刚刚注意到,我正在为 IIS7.5 配置的新 Win 2008R2 服务器在根配置中默认启用了 ASP.NET 的 ISAPI 筛选器,因此在所有站点上都是如此。我还检查了一台我可以访问的 2008 和一台 2008R2 服务器,它们也有同样的问题。
我的理解是,只有在以经典模式运行 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/
答案1
我原本也这么认为,但事实并非如此 - 过滤器实际上在两种模式下都提供了一些功能 - 例如无 cookie 会话支持。
将 ISAPI 过滤器行为与 ISAPI 扩展行为分开 - 集成模式所废除的是扩展。