我创建了一个简单的 HttpModule,它在将响应发送到客户端之前从响应中删除空格。这适用于 IIS7.0 上的 aspx 页面,但如果我创建一个静态 html 页面并调用它,HttpModule 不会启动(我知道的方式是因为源包含空格,否则应该删除)。显然有些事情我做得不对,但不知道是什么。
我的网站位于带有 .NET 4.0 和ManagedPipelineMode = Integrated
.
我已将我的模块添加为 ManagedModule 并引用 GAC 的强名称密钥程序集。
谢谢
编辑 - 这是来自 web.config 的 system.webserver 部分
<system.webServer>
...
<modules runAllManagedModulesForAllRequests="true">
<add name="RemoveWhitespaceHttpModule"
type="HttpModules.Modules.RemoveWhitespaceHttpModule, HttpModules,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=8a83u4bi47o9fo0d"
preCondition="" />
</modules>
<defaultDocument>
<files>
<add value="TestForm.aspx" />
</files>
</defaultDocument>
</system.webServer>
编辑 - 修复它。对于任何感兴趣的人,这就是我的模块检查响应然后决定是否继续删除空格的方式
if (contentType.Equals("text/html")
&& httpContext.Response.StatusCode == 200
&& httpContext.CurrentHandler != null)
{ ... }
问题在于httpContext.CurrentHandler != null上面的第三个条件。在为静态 .html 页面调用此模块时,currentHandler 为空,因此代码从未进入内部来操作 html。我已经删除了这第三个条件,它现在可以工作了。谢谢大家的回答