问题
当我尝试使用存储模拟器(v3.4.0.0)时,收到以下异常:
System.Net.WebException: The remote server returned an error: (404) Not Found.
具体而言,当我尝试与CloudBlobContainer
实例进行交互时,会发生这种情况,该实例是通过blobClient.GetContainerReference( myContainerName )
创建的。在这种情况下,当我尝试以下操作时会发生这种情况:
var permissions = await container.GetPermissionsAsync();
当我调试代码并在执行此行之前观察容器实例时,我可以看到对象的内部确实设置为使用模拟器并且所有适当的字段/属性都是如此应该是(使用正确的" devstoreaccount1"帐户名等)。
知道为什么会这样吗?更好的是:如何让我的代码看到模拟器?
其他信息
127.0.0.1:10000
但收到消息" Ping请求找不到主机127.0.0.1:10000。请检查姓名,然后重试。" 答案 0 :(得分:8)
问题不在于模拟器本身,而在于代码。虽然我没有在我阅读的文档中看到任何解释这一点的内容,但似乎有必要在与容器对象交互之前调用await container.CreateIfNotExistsAsync()
。
我认为这是因为它必须在对其应用任何设置之前物理创建容器。
答案 1 :(得分:1)
如果容器不存在,那么模拟器和存储服务都将返回404.这就是说 - 您不必在任何容器操作之前调用CreateIfNotExists - 这可能效率非常低。根据您的场景,您有几种不同的方法。您可以创建初始化作业,初始化您的环境,创建应用程序所依赖的所有资源。或者,如果容器可能不存在(例如 - 如果您是动态创建容器),则可以轻松地让应用程序处理404,然后在该点创建容器。