Chunked Transfer Encoding是否适用于Nancy,OWIN和HttpListener?

时间:2014-08-29 02:52:59

标签: .net owin nancy

我正在使用Nancy,OWIN和Microsoft.Owin.Host.HttpListener自行托管REST服务。

我的一项服务需要返回大量数据,我想将其流式传输到客户端。

这不起作用:

Get["/stream"] = _ =>
{
    var response = new Response();
    response.Headers.Add("Transfer-Encoding", "Chunked");
    response.ContentType = "text/plain";
    response.Contents = s =>
    {
        byte[] bytes = Encoding.UTF8.GetBytes("Hello World\n");
        for (int i = 0; i < 10; ++i)
        {
            s.Write(bytes, 0, bytes.Length);
            s.Flush();
            Thread.Sleep(2000);
        }
    };

    return response;
};

这应该有效吗?如果有的话,我做错了什么?查看Fiddler中的结果,设置了Content-Length,并且仅在20秒后才能看到整个响应。

(我在Google上找不到任何确凿的答案。 How do I write streamed output in NancyFX? - 这个问题似乎暗示它不起作用,但我想知道它是否已经修复,因为这是前一段时间的问题)

1 个答案:

答案 0 :(得分:2)

为了完整性,这确实可以正常工作它不适用于Fiddler。 Fiddler一次性捕获整个响应。