Reputation: 897
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?
Upvotes: 4
Views: 4135
Reputation: 1038770
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);
}
}
Upvotes: 5
Reputation: 3274
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
Upvotes: 0