尝试使用 Windows Azure 存储模拟器时收到 404 响应

Receiving 404 Response When Attempting to Use the Windows Azure Storage Emulator

问题

当我尝试使用存储模拟器 (v3.4.0.0) 时,我收到以下异常:

System.Net.WebException: The remote server returned an error: (404) Not Found.

具体来说,当我尝试与通过 blobClient.GetContainerReference( myContainerName ) 创建的 CloudBlobContainer 实例交互时会发生这种情况。在这种情况下,当我尝试以下操作时会发生这种情况:

var permissions = await container.GetPermissionsAsync();

当我在执行此行之前调试代码并观察容器实例时,我可以看到对象的内部确实设置为使用模拟器,并且所有适当的 fields/properties 都与它们相同应该是(使用正确的 "devstoreaccount1" 帐户名等)。

知道为什么会这样吗?更好的是:我怎样才能让我的代码看到模拟器?

附加信息

问题不在于模拟器本身,而在于代码。虽然我在阅读的文档中没有看到任何解释这一点的内容,但似乎有必要在与容器对象交互之前调用 await container.CreateIfNotExistsAsync()

我认为这是因为它必须在应用任何设置之前物理创建容器。

如果容器不存在,那么模拟器和存储服务都会 return 404。话虽这么说 - 你不必在任何容器操作之前调用 CreateIfNotExists - 这可能非常好效率低下。根据您的情况,您有几种不同的方法。您可以创建一个初始化作业来初始化您的环境,从而创建您的应用程序所依赖的所有资源。或者,如果容器可能不存在(例如 - 如果您动态创建它们),那么您可以轻松地让您的应用程序处理 404,然后在此时创建容器。