在返回之前如何设置Response.Filter会导致很长的(2分钟)延迟?

时间:2013-04-18 20:36:29

标签: c# asp.net wcf response.filter

我有一个.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

有关

0 个答案:

没有答案