Azure Хранение BLOB-объектов - OutOfRangeInput при UploadBlobAsync - PullRequest
1 голос
/ 15 марта 2020

Вопрос похож на этот, но прошло три года go, решения не дано, и он использовал разные методы. У меня есть файл BlobImageStore.cs, который поочередно скопирован из примера GitHub, предоставленного Microsoft по использованию хранилища BLOB-объектов для загрузки изображений. Это работало без проблем. Ушел на несколько недель и пытаюсь вернуться на работу, но теперь я получаю это 400 OutOfRangeInput исключение. Думал, что это было имя файла, когда я создавал новый Guid для использования в качестве имени файла, у которого не было проблем, но я все равно использовал работу «test» и все еще получаю то же исключение.

Есть ли у кого-нибудь представление о том, в чем может быть проблема, если я всегда загружал IFormFile из потока с именем BLOB нового GUID или просто с простым именем, например, «test», который неожиданно завершился неудачей?

public async Task<Uri> UploadImageToLibraryAsync(Stream stream, string blobName)
        {
            try
            {
                var result = await _containerClient.UploadBlobAsync(blobName, stream);
                return GetBlobUri(_containerClient.GetBlobClient(blobName));
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

I затем провел второй тест, где я создал совершенно новый клиент верхнего уровня и работал до загрузки большого двоичного объекта. Все работало один за другим, пока я не попытался скачать его. В этот момент я получаю ту же ошибку OutOfRangeInput.

var test3 = new BlobServiceClient("myConnectionString");
var test4 = test3.AccountName;
var test5 = test3.Uri;
var test6 = test3.GetBlobContainerClient("scrapit-job-images");
var test7 = test6.GetBlobClient("profile_photo.jpg");
var test8 = await test7.DownloadAsync();

Fiddler capture

1 Ответ

1 голос
/ 16 марта 2020

Я могу воспроизвести эту ошибку, если имя учетной записи не в нижнем регистре. Вот код, который я использовал:

const string accountName = "MyStorageAccountName";//Notice the camel case in account name.
const string accountKey = "account-key===";

BlobServiceClient serviceClient = new BlobServiceClient(new Uri("https://MyStorageAccountName.blob.core.windows.net"), new Azure.Storage.StorageSharedKeyCredential(accountName, accountKey));
string containerName = Guid.NewGuid().ToString();
BlobContainerClient containerClient = serviceClient.CreateBlobContainer(containerName);//Throws 400 (One of the request inputs is not valid)

Пожалуйста, попробуйте изменить имя учетной записи на строчные, и вы не должны получить эту ошибку.

...