我有一个.svc WCF Web服务,如下所示:
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Xml)]
public XElement GetFunStuff(Stream raw) {
// make an XElement document ...
// Compress it.
// !!!! If I do this, it takes 2 minutes. If I do NOT, it takes under a second.
{
HttpContext.Current.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-Encoding", "deflate");
}
return xml;
}
鉴于我当前的测试数据,未压缩的XML响应为70k。压缩,它是6k。这两种方式在功能上都有效,因为它们返回响应(除了一个标记为deflate)。我的测试服务器没有被其他任何东西使用,在测试期间,CPU使用率没有明显的上升。
那么压缩响应如何在~122到~128秒之间响应,但未压缩响应需要(更期望的)第二或第二?什么可能挂起或暂停?
[编辑]我刚注意到我的Content-Length正在被设置(通过什么,我不确定)到未压缩的大小,而不是压缩的大小。然后让服务器等待,直到某些东西强行关闭连接或放弃。所以问题就变成了,为什么我的Content-Length错了? ......这可能与...... WCF service returns incorrect Content-Length when using gzip encoding
有关