【发布时间】:2018-10-02 05:57:05
【问题描述】:
我正在使用后端 web api ASP.NET CORE 2.1 和前端 angular 6 开发一个网站。
在这个站点中,我正在通过 web api 将大文件的上传与 microsoft.azure.storage 9.3.2 集成在一起。我正在按块进行分块,并将它们从 FE 发送到端点。在里面我做了以下逻辑:
var container = CloudStorageAccount.Parse(key).CreateCloudBlobClient().GetContainerReference(containerName);
var result = await container.CreateIfNotExistsAsync();
if (result)
{
await container.SetPermissionsAsync(new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
}
BlockBlob = container.GetBlockBlobReference(blobName);
await fileUploadSession.BlockBlob.PutBlockAsync(block.BlockId, chunkStream, null);
我在这里有一个例外,说“其中一个 HTTP 标头的值格式不正确。”
stackTrace 是:
在 Microsoft.WindowsAzure.Storage.Core.Executor.Executor.d__4`1.MoveNext() 在 C:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\WindowsRuntime\Core\Executor\Executor.cs :第316行 --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob.d__62.MoveNext() 在 C:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\WindowsRuntime\Blob\CloudBlockBlob.cs:line 1020 --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 vidiwin2Api.Controllers.VideosController.d__18.MoveNext() 在 D:\repos\vidiwin2api\vidiwin2Api\Controllers\VideosController.cs:line 469
最令人惊奇的是,我在旧版本中具有相同的功能,在 Framework 4.6 和 microsoft.azure.storage 6.0.0 上使用 BE web api,并且可以正常工作!!
我已经在 PutBlockAsync 中测试了所有类型的参数,并且总是出现相同的异常。
谁能帮帮我?
【问题讨论】:
标签: azure azure-storage