2017-08-18 7 views
1

私はresponse.Contentとしてzipファイルを送信します。httpResponseMessageからStreamContentとしてzipfileを読み取る方法は?

[HttpGet] 
[Route("Package")] 
public async Task<HttpResponseMessage> GetLogsPackage() 
{ 
    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);      
    using (var stream = new MemoryStream()) 
    { 
     using (var zipFile = ZipFile.Read((Path.Combine(path, opId.ToString()) + ".zip")))     
     { 
      zipFile.Save(stream); 
      response.Content = new StreamContent(stream); 
      response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 
      response.Content.Headers.ContentLength = stream.Length; 
     } 
    } 
    return response; 
} 

このメソッドを呼び出した後、このストリームを取得する方法?私のコードは機能しません(zipファイルとして読み取ることができません) 私はstream.lenght、例えば345673を送りますが、367の長さの応答を受け取ります。 どうしたのですか?

var response = await _coreEndpoint.GetLogsPackage(); 
    using (var stream = response.Content.ReadAsStreamAsync()) 
    using (var zipFile = ZipFile.Read(stream)) 
    { //do something with zip-file 

答えて

0

あなたはawaitする必要がありますようにReadAsStreamAsyncをINGの「ルックス:

using (var stream = await response.Content.ReadAsStreamAsync()) 

現在、あなたのコードは、あなたが意図するものはおそらくされていない、ZipFile.ReadTask<Stream>を通過しているが。

関連する問題