我正在寫一個簡單的Web應用程序使用南希。至少有一個請求導致未知長度的流,所以我無法提供Content-Length
。我想使用Transfer-Encoding: chunked
,或者(在這種情況下同樣可以接受,Connection: close
)。如何在NancyFX中編寫流輸出?
我已經對南希的源代碼快速黑客,我已經添加Response.BufferOutput
,並且代碼設置HttpContext.Response.BufferOutput
到false
。你可以看到這裏:
public class HomeModule : NancyModule
{
public HomeModule()
{
Get["/slow"] = _ => new SlowStreamResponse();
}
private class SlowStreamResponse : Response
{
public SlowStreamResponse()
{
ContentType = "text/plain";
BufferOutput = false;
Contents = s => {
byte[] bytes = Encoding.UTF8.GetBytes("Hello World\n");
for (int i = 0; i < 10; ++i)
{
s.Write(bytes, 0, bytes.Length);
Thread.Sleep(500);
}
};
}
}
它似乎沒有任何效果。響應在5秒後立刻全部顯現。我已經測試過這個簡單的基於WebRequest
的客戶端。
如何獲得分塊輸出在南希工作?我正在使用ASP.NET託管,但我會對其他託管選項的答案感興趣。
如果我寫使用HttpListener
一個簡單的服務器,我可以設置SendChunked
到true
,並把它發送分塊的輸出,這我簡單的客戶端正確地接收數據塊。
你在哪裏設置了Nancy代碼中的HttpContext.Response.BufferOutput?你有沒有找到一種方法讓它與OWIN一起工作? – Hooligancat 2014-05-15 15:47:06
我不記得了,對不起。 – 2014-05-15 16:04:06
在這個問題上看到標記的答案=> http://stackoverflow.com/questions/29953301/stream-an-sqlfile-stream-using-nancy – sp3tsnaz 2017-03-28 10:01:19