Generate and serving gz compressed in ASP.NET

2020-07-18 02:28发布

Hi I need to serve from a ASHX a GZ compressed file. In the code I already have the string in clear:

public void ProcessRequest(HttpContext context)
{
    // this is the code without compression
    HttpRequest Request = context.Request;
    HttpResponse Response = context.Response;

    Response.ContentEncoding = Encoding.UTF8;
    Response.ContentType = "text/xml";

    // this is the string to compress and send to the client
    string xml = GenerateXml();

    Response.Write(output);
    Response.End();
}

Now and I need to

Any help?

标签: c# asp.net gzip
2条回答
地球回转人心会变
2楼-- · 2020-07-18 02:44

You could enable compression at IIS level for a specific directory. I believe this will be more efficient than doing it by hand in the generic handler.


UPDATE:

You could use GZipStream to compress the xml directly to thew response stream:

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "application/x-gzip";
    var xml = "<xml/>";
    using (var gzipStream = new GZipStream(context.Response.OutputStream, CompressionMode.Compress))
    {
        var buffer = Encoding.UTF8.GetBytes(xml);
        gzipStream.Write(buffer, 0, buffer.Length);
    }
}
查看更多
Explosion°爆炸
3楼-- · 2020-07-18 02:51

GZip compression is supported in ASP.NET. A quick Google resulted in these posts which seem to help:

http://west-wind.com/WebLog/posts/10294.aspx - doing GZip
http://www.west-wind.com/Weblog/posts/10564.aspx - returning the result

查看更多
登录 后发表回答