当前位置: 首页 > 知识库问答 >
问题:

Azure Blob 400创建容器时出现错误请求

姬慎之
2023-03-14

我正在开发一个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创建了一个包含所有详细信息的良好存储。我不知所措。我研究过网络,每个人都说这是一个命名问题,但我没有发现任何错误。

我使用的测试容器名称:< code > imageads-57905553-8585-4d7c-8270-be 9 e 611 EDA 81

容器具有以下uri:{http://127.0.0.1:10000/devstoreaccount1/imageads-57905553-8585-4d7c-8270-be9e611eda81}

更新:我已将容器名称更改为仅图像,但我仍然收到相同的异常。此外,开发连接字符串如下所示:


共有3个答案

巫马翰翮
2023-03-14

我最终发现了问题所在。

我的问题是 Blob 存储模拟器无法启动(其他模拟器将启动,而我错过了 blob)。问题最终是端口 10000(默认 blob 模拟器端口)已被另一个软件使用。我使用Netstat cmd工具来查看它是哪个软件,杀死了它,它现在像一个魅力一样工作!!!谢谢大家!!

薛坚
2023-03-14

为了扩展@kwill的答案,我实现了一个解决方案,用于根据Azure的容器命名规则将任何字符串转换为可接受的容器名称:

public static string ToURLSlug(this string s)
{
    return Regex.Replace(s, @"[^a-z0-9]+", "-", RegexOptions.IgnoreCase)
        .Trim(new char[] { '-' })
        .ToLower();
}

然后,当你试图拿到容器时,先把它清理干净:

CloudBlobContainer container = blobClient.GetContainerReference(bucket.ToURLSlug());
申屠黎昕
2023-03-14

正如你在研究中发现的,问题在于名字。

您说测试容器名为 imageads-57905553-8585-4d7c-8270-be9e611eda81,但在代码中,您使用的是 ImageAds-57905553-8585-4d7c-8270-be9e611eda81。请注意大小写的差异。如果将容器名称全部切换为小写,它将正常工作。


有关详细信息,请参阅命名和引用容器、Blob和元数据的容器名称下的#3:

 类似资料:
  • 我正在用MySQL数据库构建一个django应用程序。当我第一次运行“Python Manage.py Migrate”时,一些表创建得很好,然后出现一些错误。引出的错误是: 完整的回溯是:

  • 我正在尝试使用EclipseLink创建一个表。正在使用的java类是:- EL警告]:2017-04-07 14:04:53.768--ServerSession(1650327539)--异常[EclipseLink-4002](Eclipse持久性服务-2.6.3.v20160428-59C81C5):org.Eclipse.Persistence.exceptions.DatabaseEx

  • 我想知道是否有人能告诉我为什么当我尝试使用改版执行RESTfull服务时会出现错误请求错误 翻新接口: MainActivity中的Asyntask 结果总是失败。我最初认为问题是因为Reverfit内置的gson转换器在将响应转换为stock对象时遇到了麻烦,因为我只收到了一个“reverfit.retrofiterror”响应。但是“bad request”响应让我认为问题出在API的URL上

  • 问题内容: 我在Docker容器中有一个MySQL数据库。入口点执行创建数据库的脚本和创建表的脚本。 除了一张桌子,其他所有东西都工作正常。 记录到控制台的错误是 第150行是后面的开括号 MySQL版本:8.0.3-rc-log 主机操作系统:Debian jessie 我开始考虑并且可能是保留关键字,因此我重命名了表和列,但错误仍然存​​在。 问题答案: @Bill Karwin在第一条评论中

  • 运行这个grails应用程序时,我收到了“ScriptExitException”。 代码中唯一的更改是这个域类 班级相册{ 控制台输出: 圣杯 1错误|运行脚本运行应用程序时出错:org。科德豪斯。非常棒。圣杯。cli。ScriptExitException(使用--stacktrace查看完整跟踪) 我必须让它保持静止,因为它正在某处使用。。你知道该怎么解决这个问题吗?

  • 我想创建一个在MySQL中拥有自己数据库所有权限的用户。 当我使用这个用户创建一个表时,MySQL返回SQL server正在使用只读选项运行。 但是,当我改变到另一个现有用户的所有权限上,我可以创建表没有错误。 我想知道只读选项是全局的还是什么? 以下是我使用MySQL root的MySQL命令: 然后我切换到用户"demo": 所以我检查了只读选项,它似乎是打开的。 然而,我尝试使用另一个用户