使用ASP.NET 4.0和IIS7进行HTTP压缩

时间:2011-02-13 20:21:30

标签: asp.net iis-7 asp.net-4.0 http-compression

我一直试图在我的一些网站上实施HTTP压缩一段时间。

我尝试使用以下两种技术的变体实现HTTP压缩:

From Application_BeginRequest in Global.asax

From a custom HttpModule

在这两种情况下,它最初似乎都有效。但是,当我在网站上浏览时,我很快就失去了我的CSS样式。并且浏览器报告JS文件包含无效字符。而且,在某些时候,整个网站完全变成了胡言乱语。

我当然希望我知道这里发生了什么。有没有人有任何建议?是因为这些技术仅适用于旧版本的ASP.NET / IIS吗?

编辑:我无法访问IIS,也不应该要求它。随着ASP.NET和IIS的最新迭代,越来越多的控制权被赋予web.config而不涉及IIS。这应该完全支持,而不是深入研究IIS,事实上,上面的两个链接声称他们能够做到这一点。我无法让它为我工作。

编辑:在进一步检查时,使用上面第二个链接中的代码(HTTP模块),我可以看到正在为我网站上的所有文件类型调用模块处理程序。这显然是问题的一部分。 (请注意,在某些情况下,整个页面变为垃圾,这表明存在其他问题。)任何人都可以建议确定将哪些文件发送到HTTP处理程序的内容,或者为什么该链接上的代码可能对其他人有效而不是我?

2 个答案:

答案 0 :(得分:3)

IIS 7 supports compression natively - 不应该有任何编码。除非您尝试在尚未启用它的托管服务提供商上实施它,但在您的问题中未明确说明

答案 1 :(得分:1)

虽然我可能会遇到一些问题,但Walkthrough: Creating and Registering a Custom HTTP Module中的以下引用似乎说明了这个问题:

  
    

如果ASP.NET应用程序在IIS 6.0下运行,则可以使用HTTP模块自定义对ASP.NET提供服务的资源的请求。这包括ASP.NET网页(.aspx文件),Web服务(.asmx文件),ASP.NET处理程序(.ashx文件)以及已映射到ASP.NET的任何文件类型。如果ASP.NET应用程序在IIS 7.0下运行,则可以使用HTTP模块自定义对IIS提供的任何资源的请求。这不仅包括ASP.NET资源,还包括HTML文件(.htm或.html文件),图形文件等。

  

正如我开始怀疑的那样,这是ASP.NET 4.0和IIS7的变化。正如我多次提到的,这些正在变得越来越集成。上面的引用表明HTTP模块现在处理IIS提供的所有文件类型。

这就是为什么旧代码对我不起作用的原因。修复似乎只是从我的处理程序中检查文件类型类型。

相关问题