Azure SDK PutBlockAsync引发错误:响应提前结束

问题描述

我们正尝试使用Azure SDK的PutBlockAsync API将文件上传到Azure Blob存储。

   using (var blockStream = new MemoryStream(block))
   {
       await blob.PutBlockAsync(blockId,blockStream,"").ContinueWith((t) => {
             if (t.IsFaulted)
             {
                SysLog.Debug($"Error occured in PutBlockAsync while uploading a block for {blob.Name}. Please check error log.");
                SysLog.Error(t.Exception);
             }
             else if (t.IsCanceled)
             {
                SysLog.Debug($"PutBlockAsync cancelled for {blob.Name}.");
             }
             else
             {                                    
                isChunkSent = true;
             }  
          });
  }

上传失败,并显示“响应提前终止”和以下错误/跟踪:

 ---> Microsoft.Azure.Storage.StorageException: An error occurred while sending the request.
 ---> System.Net.Http.HttpRequestException: An error occurred while sending the request.
 ---> System.IO.IOException: The response ended prematurely.
   at System.Net.Http.httpconnection.FillAsync()
   at System.Net.Http.httpconnection.ReadNextResponseHeaderLineAsync(Boolean foldedHeadersAllowed)
   at System.Net.Http.httpconnection.SendAsyncCore(HttpRequestMessage request,CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.httpconnection.SendAsyncCore(HttpRequestMessage request,CancellationToken cancellationToken)
   at System.Net.Http.httpconnectionPool.SendWithNtConnectionAuthAsync(httpconnection connection,HttpRequestMessage request,Boolean doRequestAuth,CancellationToken cancellationToken)
   at System.Net.Http.httpconnectionPool.SendWithRetryAsync(HttpRequestMessage request,CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask,CancellationTokenSource cts,Boolean disposeCts)
   at Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteAsync[T](restcommand`1 cmd,IRetryPolicy policy,OperationContext operationContext,CancellationToken token)
   --- End of inner exception stack trace ---
   at Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteAsync[T](restcommand`1 cmd,CancellationToken token)
   at Microsoft.Azure.Storage.Blob.CloudBlockBlob.PutBlockAsync(String blockId,Stream blockData,Checksum contentChecksum,AccessCondition accessCondition,BlobRequestOptions options,AggregatingProgressIncrementer progressIncrementer,CancellationToken cancellationToken)

非常感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)