【问题标题】:ASP.NET gzip script and CSS on Global.asaxGlobal.asax 上的 ASP.NET gzip 脚本和 CSS
【发布时间】:2010-01-29 18:11:23
【问题描述】:

我正在我的应用程序中实现这个库,GZip compress your website's HTML/CSS/Script in code

效果非常好如果我在 Visual Studio 中运行该网站,但是当我编译我的网站并在 IIS 中发布时,它仅 gzip ASPX 文件,而不是 CSS 或 JavaScript文件。

有没有更好的方法在 C# 中实现 JavaScript 和 CSS gzip,对应于 Visual Studio 2005(更改 IIS 不是一个选项,因为它必须在代码中)。

【问题讨论】:

  • 您使用的是什么版本的 IIS?

标签: c# javascript asp.net css gzip


【解决方案1】:

首先,你需要创建一个 HttpHandler 来处理它:

namespace com.waynehartman.util.web.handlers
{
    [WebService(Namespace = "http://waynehartman.com/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class HttpCompressor : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            // Code for compressing the file and writing it to the HttpResponse
        }
        public bool IsReusable
        {
            get { return true; }
        }
    }
}

然后你需要在你的 web.config 中添加一个处理程序映射:

<configuration>
    <system.web>
        <httpHandlers>
            <add verb="*" path="*.css" 
                type="com.waynehartman.util.web.handlers.HttpCompressor, WayneHartmanUtilitiesLibrary"/>
            <add verb="*" path="*.js" 
                type="com.waynehartman.util.web.handlers.HttpCompressor, WayneHartmanUtilitiesLibrary"/>
        </httpHandlers>
    </system.web>
</configuration>

【讨论】:

  • FullQualified.Class 和 LibraryName 会是?
  • 据我所知 HttpHandlers 是将多个文件合并为一个,或者类似的东西。
  • @jmpena HttpHandlers 用于创建对 http 请求或响应的任何自定义处理。它们旨在让您完全按照自己的意愿去做。
  • 好吧,我试试你的解决方案,但只有一个问题(我是一个 win32 开发人员),你把它的代码放在 web 服务或者可以是我网站中的一个类?
  • @jmpena [WebService] 标签在您通过 Visual Studio 创建新的通用处理程序时默认显示在那里。我不确定通过移除它们会产生什么副作用,因为它们不会因为在那里而伤害你。尝试将 http 处理程序视为基本的和非专业化的 aspx 页面。您可以完全控制请求/响应的内容,而不是 .NET 为您处理所有页面请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多