を通じて私は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;
}
で
server.DisableResponseBuffering
を参照してください:System.Webのも応答をバッファリング?ほとんどのHttpClientメソッドは、デフォルトで応答をバッファします。 GetStreamAsyncやSendAsyncとHttpCompletionOption.ResponseHeadersReadのようなものは必要ありません。 – Tratcher私は質問を更新しました。ありがとう。 (使用は結果ではなく待つ以外) – bpiec
は、[OK]を検索します。 – Tratcher