目前我已经坚持使用IIS6 for ASP.NET-MVC(因为我无法升级到Server 2008)。它似乎不知道我的RESTful URL是动态文件,并没有压缩它们。
所有旧的.aspx文件都是压缩的(如Fiddler所示),但不是'/products/1001'
类型的URL。
有没有办法让IIS6在IIS6中压缩我的ActionResults而不使用像ActionFilter for compression这样的东西。
我假设IIS7足够聪明,知道它们是动态的。
如果你能告诉我IIS6如何知道哪些文件是动态的,那么奖励积分!
答案 0 :(得分:5)
由于ASP.NET的HTTP压缩通常是从版本1.0开始使用HttpModules实现的,而HttpModules仍然属于MVC框架使用的ASP.NET请求管道,因此您仍然可以使用HttpModule注入GZIP或deflate响应过滤
在这里,您可以找到一个非常好的,开源的,随时可以发布的实现: HttpCompress by Ben Lowery(在Google Code下载)
您只需要添加对DLL的引用,并在web.config中添加几行。它已经处理了非常奇特和罕见的案例和例外。您可以在web.config中添加排除项,而不是基于文件扩展名(如在IIS6中),但在mime类型上,这可能正是您所需要的。
我应该补充一点,我实际上已经使用这个库在IIS6上运行ASP.NET MVC网站,所以我可以确认这在实践中有效。
答案 1 :(得分:0)
在Web配置中,您应该注册StaticFileHandler和HTTP Module
<add verb="GET,HEAD,POST" path="*" type="[Web.Front.Modules].StaticFileHandler"/>
<add name="HttpCompressionModule" type="[Web.Front.Modules].HttpCompressionModule"/>
您会找到here
的源代码但不要忘记在IIS上启用压缩
答案 2 :(得分:0)
这是使用通配符映射和无扩展名网址对MVC和IIS 6起作用的一个选项:
这是一种解决方法,但我暂时停留在Server 2003和IIS 6上。