我正在开发一个 ASP.Net MVC 4 应用程序,并使用 Azure Blob 来存储用户要上传的图像。我有以下代码:
var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString);
var blobStorage = storageAccount.CreateCloudBlobClient();
//merchantKey is just a GUID that is asociated with the merchant
var containerName = ("ImageAds-" + merchant.merchantKey.ToString()).ToLower();
CloudBlobContainer container = blobStorage.GetContainerReference(containerName);
if (container.CreateIfNotExist())
{
//Upload the file
}
一旦执行 if 语句,我就会收到以下异常:
{"The remote server returned an error: (400) Bad Request."}
我以为这是容器的名称,但我没有发现它有什么问题。连接字符串似乎创建了一个良好的存储空间,其中包含 blob 的所有详细信息。我不知所措。我研究过网络,每个人都说这是一个命名问题,但我找不到任何问题。
我使用的测试容器名称:imageads-57905553-8585-4d7c-8270-be9e611eda81
容器具有以下 uri:{http://127.0.0.1:10000/devstoreaccount1/imageads-57905553-8585-4d7c-8270-be9e611eda81}
更新:
我已将容器名称更改为 image
我仍然遇到同样的异常。开发连接字符串如下:<add name="StorageConnection" connectionString="UseDevelopmentStorage=true" />
最佳答案
正如您通过研究发现的那样,问题在于名称。
您说您的测试容器名为 imageads-57905553-8585-4d7c-8270-be9e611eda81
,但在您的代码中您使用的是 ImageAds-57905553-8585-4d7c-8270- be9e611eda81
。注意大小写的差异。如果您将容器名称切换为全部小写,它将正常工作。
有关更多信息,请参阅容器名称下的#3:Naming and Referencing Containers, Blobs, and Metadata :
3. All letters in a container name must be lowercase.
关于asp.net-mvc-4 - Azure Blob 400 创建容器时的错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19599819/