私は、Nancyを使って簡単なWebアプリケーションを作成しています。少なくとも1つのリクエストで長さが不明なストリームが生成されるため、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
私は覚えていません、申し訳ありません。 –
この質問のマークされた答えを見る=> http://stackoverflow.com/questions/29953301/stream-an-sqlfile-stream-using-nancy – sp3tsnaz