ASP.net自定义Http模块-Ihttp模块
本文关键字:模块 -Ihttp Http 自定义 net ASP | 更新日期: 2023-09-27 18:21:14
运行IIS 7
我正在尝试实现一个自定义的Http模块,我真正想要的是实现gzip压缩。
似乎有几种方法可以做到这一点。
我试图通过访问HttpApplication.BeginRequest事件来实现这一点,并在那里添加一些将使用gzip的代码。
我使用umbraco,所以我没有全局.asax文件,所以我得到的是我网站的应用程序代码文件夹中的一个类文件:
public class GzipHttpCompressionModule : IHttpModule
{
public GzipHttpCompressionModule()
{}
public void Dispose()
{}
public void Init(HttpApplication context)
{
context.BeginRequest +=
(new EventHandler(this.Application_BeginRequest));
}
private void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;
}
}
然后在我的网络配置文件中,我注册了模块
<httpModules>
..
<!-- Register Custom Http Gzip Module -->
<add name="GzipHttpCompressionModule" type="GzipHttpCompressionModule"/>
..
</httpModules>
当我在Application_BeginRequest中设置断点时,当我浏览网站时,它永远不会被击中
启用IIS7 gzip<lt;第四个答案是我正在尝试实现的技术。
有什么想法吗?为什么这不起作用?
<system.web>
标记中的<httpModules>
标记仅用于旧IIS版本(<=6)或使用经典模式时(不推荐)。在<system.webServer>
中使用<modules>
。
更多信息请点击此处:http://www.byteblocks.com/post/2010/09/16/HttpModule-Not-Working-In-IIS7.aspx