【发布时间】:2014-09-09 09:36:24
【问题描述】:
运行 IIS 7
我正在尝试实现一个自定义 Http 模块,我真正想要的是实现 gzip 压缩。
似乎有几种方法可以做到这一点。
我试图通过访问 HttpApplication.BeginRequest 事件并在其中添加一些将使用 gzip 的代码来做到这一点。
我正在使用 umbraco,所以我没有 global.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;
}
}
然后在我的 web-config 文件中注册模块
<httpModules>
..
<!-- Register Custom Http Gzip Module -->
<add name="GzipHttpCompressionModule" type="GzipHttpCompressionModule"/>
..
</httpModules>
当我在 Application_BeginRequest 中设置断点时,我浏览网站时它永远不会被击中
有什么想法吗?为什么这不起作用?
【问题讨论】:
标签: c# asp.net iis gzip httpmodule