1

有一个类似的问题,但它是三年前的,没有给出解决方案,它使用了不同的方法。我有一个 BlobImageStore.cs 文件,该文件基本上是从 Microsoft 给出的关于使用 Blob Storage 上传图像的 GitHub 示例中复制的。这工作没有问题。离开了几个星期,并试图重新开始工作,但现在我遇到了这个400 OutOfRangeInput例外。以为是文件名,因为我正在创建一个新的 Guid 用作没有问题的文件名,但我还是使用了“测试”工作,但仍然遇到相同的异常。

如果我一直从流中上传带有新 GUID 的 blob 名称的 IFormFile 或者只是像“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;
            }
        }

然后我进行了第二次测试,我创建了一个全新的顶级客户端并一直工作到下载 blob。在我尝试下载之前,这一切都有效。那时我得到了同样的 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();

提琴手捕获

4

1 回答 1

1

如果帐户名称不是全部小写,我可以重现此错误。这是我使用的代码:

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)

请尝试将您的帐户名称更改为全小写,您应该不会收到此错误。

于 2020-03-16T03:25:48.023 回答