Хранилище Azure CloudBlockBlob.PutBlockAsync () Значение одного из заголовков HTTP имеет неправильный формат. - PullRequest
0 голосов
/ 01 октября 2018

Я занимаюсь разработкой веб-сайта с веб-интерфейсом API ASP.NET CORE 2.1 и внешним интерфейсом 6.

На этом сайте я интегрирую загрузку больших файлов через веб-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: строка 1020 --- конец стекатрассировка от предыдущего местоположения, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в vidiwin2Api.Controllers.VideosController.d__18.MoveNext () в D: \ repos \ vidiwin2api \ vidiwin2Api * Контроллеры \ VideosController * 101 * Удивительно, что 1011 контролируетУ меня была та же функциональность в более старой версии, с веб-интерфейсом BE на Framework 4.6 и microsoft.azure.storage 6.0.0, и это работает !!

Я проверил все виды параметров в PutBlockAsync и всегдато же исключение.

Может кто-нибудь мне помочь, пожалуйста?

1 Ответ

0 голосов
/ 02 октября 2018

У меня была та же ошибка, потому что я забыл сбросить позицию потока в 0, прежде чем вызывать PutBlockAsync ().Попробуйте

chunkStream.Position = 0;
await fileUploadSession.BlockBlob.PutBlockAsync(block.BlockId, chunkStream, null);

В противном случае проверьте свойство ExtendedErrorInformation в Исключении.Там вы найдете дополнительную информацию о неправильном заголовке HTTP.

...