我正在使用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? - 这个问题似乎暗示它不起作用,但我想知道它是否已经修复,因为这是前一段时间的问题)
答案 0 :(得分:2)
为了完整性,这确实可以正常工作但它不适用于Fiddler。 Fiddler一次性捕获整个响应。