加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何让静态Html页面通过IIS7.0中的HttpModule?

发布时间:2020-12-16 03:26:52 所属栏目:asp.Net 来源:网络整理
导读:我创建了一个简单的HttpModule,它在将响应发送到客户端之前从响应中删除空格.这适用于IIS7.0上的aspx页面,但如果我创建一个静态html页面并调用它,HttpModule不会启动(我知道的方式是因为源包含空格,否则本应删除).显然有一些我做得不对,但不知道是什么. 我的
我创建了一个简单的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为null,因此代码永远不会进入操作html.我已经删除了这第三个条件,它现在有效.谢谢大家的回答

解决方法

这应该可以在web.config中实现:

<modules runAllManagedModulesForAllRequests="true"></modules>

这是一种快速简便的解决方案,但可能会导致问题/性能问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读