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

我得到了仿真和真实Azure存储的错误请求(400)消息

周阳波
2023-03-14

我正在开发一个Azure网站,我想利用Blob存储。我正在使用VS2013,Azure SDK 2.2。我试过NuGet的Azure Storage 2.1.0.4,也试过使用最新的3.0.2.0。我已经将emulator升级到了最新的预览版本2.2.1,之前我使用的是2.2.0。

我的问题是,无论我指向模拟器还是真实存储器,我都会收到错误的请求400错误(无效的头)。

我设置了一个非常简单的表单应用程序,只需一个按钮就可以轻松完成。

private void button1_Click(object sender, EventArgs e)
{
   var account = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));

   CloudBlobClient blobClient = account.CreateCloudBlobClient();

   CloudBlobContainer container = blobClient.GetContainerReference("UserImages");    

   if (!container.Exists())
   {
      container.Create();
      container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Off });
   }

}

一切看起来都很好,直到容器。存在()执行,然后我得到一个未处理的错误(坏请求400)。我尝试了几个不同的操作,每次都得到同样无用的消息。

我将Azure连接字符串存储在appSettings部分,在这个简单的示例中,我尝试指向一个真实的存储帐户和模拟器,每次都会出现400错误。

我的配置文件有这个:

<appSettings>
    <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=[MyAccountName];AccountKey=[MYREALKEY]" />
</appSettings>

使用VS2013中的服务器资源管理器,我可以愉快地连接到模拟器和实际存储,并无问题地访问Blob存储。

这实际上阻止了我向网站添加将文件上传到存储帐户的功能。

还有谁有这个问题吗?据我所知,我已经尝试过旧版本和最新版本的重要组件。不过我一直都有SDK 2.2。

感谢您的建议。

为了了解更多信息,我在Azure管理门户网站上找到了以下示例:http://www.windowsazure.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs-20/

谢谢

伊恩

共有2个答案

越飞鸾
2023-03-14

这让我疯狂了两天。安装/卸载SDK、模拟器、Azure存储NuGet包等。我终于让模拟器和真正的存储一样工作。您下载安装模拟器2.2.1预览版的MSI包含一个自述文件——我不知道它在那里,但它包含一些非常重要的说明!

3. Copy all files from the following path:

        For 32-bit OS: "%ProgramFiles%\Windows Azure Storage Emulator 2.2.1\devstore"
        For 64-bit OS: "%ProgramFiles(x86)%\Windows Azure Storage Emulator 2.2.1\devstore"

   to the following path:

        "%ProgramFiles%\Microsoft SDKs\Windows Azure\Emulator\devstore"

   If prompted, choose to replace the existing files with the new ones.

事实证明MSI在运行时不会更新模拟器实际使用的文件!你必须手工执行这个任务。我觉得看不到这个基本指令太愚蠢了。事实证明RTFM是答案!

常雅珺
2023-03-14

要查看命名规则,请查看以下链接:http://msdn.microsoft.com/en-us/library/windowsazure/dd135715.aspx.从本文档页面:

容器名称必须是符合以下命名规则的有效DNS名称:

>

  • 容器名称必须以字母或数字开头,并且只能包含字母、数字和破折号(-)字符。

    每个破折号(-)字符的前面和后面必须紧跟一个字母或数字;
    容器名称中不允许使用连续破折号。

    容器名称中的所有字母必须为小写。

    容器名称的长度必须在3到63个字符之间。

    关于storage emulator出现400错误,请检查storage client library版本。如果是3。x、 然后,您需要安装今天预览版中发布的storage emulator 2.2.1。有关这方面的更多信息,请参见:http://blogs.msdn.com/b/windowsazurestorage/archive/2014/01/16/windows-azure-storage-emulator-2-2-1-preview-release-with-support-for-2013-08-15-version.aspx

  •  类似资料:
    • 我在调试模式下运行它,并附加了一个包含异常详细信息的图像。我怎么知道出了什么问题?我试图在表中插入数据。azure不能告诉我更多细节吗? Obs:存储在Windows Azure上,而不是我的机器上。表已创建,但我在插入数据时出现此错误 下面是插入代码:

    • translated_page: https://github.com/PX4/Devguide/blob/master/en/simulation/airsim.md translated_sha: RETRANSLATE AirSim仿真 AirSim是一个基于虚幻引擎(Unreal Engine)的开源、跨平台无人机模拟器。它可以使用硬件在环(HITL)或软件在环(SITL)的方式为Pixh

    • translated_page: https://github.com/PX4/Devguide/blob/master/en/simulation/hitl.md translated_sha: 95b39d747851dd01c1fe5d36b24e59ec865e323e 硬件在环仿真 硬件在环仿真指的自驾仪与仿真器相连并且所有的代码运行在自驾仪上的仿真。这种方法的优点是可以测试代码在实际处

    • Gazebo是一个自主机器人3D仿真环境。它可以与ROS配套用于完整的机器人仿真,也可以单独使用。本文简要介绍单独的使用方法。 {% raw %} To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video {% endraw %} {%

    • 和错误处理方法为: customer.java(模型): json数据: 我可以捕获HttpMessageNotReadableException并进行处理。 错误处理已更改的方法。 但是,继承来创建基类或在所有控制器中编写这段代码感觉我没有看到spring的设计概念,因为它决定在那里处理以创建一个新的ExceptionResolver。 谢谢,