2016-12-06 8 views
0

を通じて私はHttpClient.SendAsync()呼び出しの結果としてHttpResponseオブジェクトを持っています。応答は、データの1.5ギガバイトでchunked transfer encodingと結果を持っています。ストリーミングのHttpResponse Owin

私はOWINのパイプラインを介してこのデータを渡したいです。これを行うには、ストリームに変換する必要があります。これを行うための簡略化されたコードは次のとおりです。

ただし、最後の行はストリーム全体をメモリにコピーします。そして、私がwgetを使用してバックエンドサーバーから直接データをダウンロードすると、そのデータは正常にダウンロードされ、プログレスバーが表示されます(チャンクされているので全体のサイズはわかりません)。私は私のOWINがホストするアプリケーションからデータをダウンロードするためにwgetを使用する場合しかし、それは要求を送信するにスティック。

OWINパイプラインでこのデータをストリーミングしてメモリにコピーしないようにするにはどうすればよいですか?

EDIT

これは私がHttpResponseを取得する方法である:

var client = new HttpClient(new HttpClientHandler()); 
// …and then: 
using (var request = new HttpRequestMessage { RequestUri = uri, Method = HttpMethod.Get }) 
{ 
    return client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result; 
} 
+0

server.DisableResponseBufferingを参照してください:System.Webのも応答をバッファリング?ほとんどのHttpClientメソッドは、デフォルトで応答をバッファします。 GetStreamAsyncやSendAsyncとHttpCompletionOption.ResponseHeadersReadのようなものは必要ありません。 – Tratcher

+0

私は質問を更新しました。ありがとう。 (使用は結果ではなく待つ以外) – bpiec

+0

は、[OK]を検索します。 – Tratcher

答えて

0
+0

はい、IIS上でホストされています。しかし、私たちはSystem.Webをまったく使用していません(それについての参照はありません)。 – bpiec

+0

IIS上OWINはSystem.Webの(Microsoft.Owin.Host.SystemWeb)を使用しています – Tratcher