检查是否存在队列

问题描述 投票:1回答:3

我对Windows Azure存储队列错误/访问有一个非常基本的问题。

我正在尝试确定给定的存储帐户是否已经包含给定名称的队列-说“ queue1”。我不希望创建不存在的队列,因此不希望使用CreateIfNotExist方法。我授予SAS令牌的权限是-处理和添加(因为我要做的就是将新消息添加到队列仅在它已经存在的情况下],否则抛出错误)

问题是,当我尝试获取对假的命名队列的引用并向其中添加消息时,我得到403。当SAS令牌没有权限时,也会发生403,因此我无法确定是什么导致错误。

有没有一种方法可以明确地知道队列是否存在?

我尝试了BeginExist和EndExist方法,但是即使我看到队列在那里,它们也总是返回false。

有什么建议吗?

我对Windows Azure存储队列错误/访问有一个非常基本的问题。我试图找出给定的存储帐户是否已经包含给定名称的队列-说“ queue1”。我不...

azure azure-storage azure-storage-queues
3个回答
2
投票

如果队列存在,Get Queue Metadata REST API操作将返回状态代码200,否则返回Get Queue Metadata


1
投票

即使队列不存在,您是否也会遇到403错误。基于上述内容,我创建了一个简单的控制台应用程序。该队列在我的存储帐户中不存在。当我尝试添加带有有效SAS令牌的消息时,出现404错误:


0
投票

CloudStorageAccount storageAccount = new CloudStorageAccount(new StorageCredentials("account", "key"), false); CloudQueueClient client = storageAccount.CreateCloudQueueClient(); CloudQueue queue = client.GetQueueReference("non-existent-queue"); var queuePolicy = new SharedAccessQueuePolicy(); var sas = queue.GetSharedAccessSignature(new SharedAccessQueuePolicy() { SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(-30),//-30 to ensure SAS is invalid Permissions = SharedAccessQueuePermissions.Add | SharedAccessQueuePermissions.ProcessMessages | SharedAccessQueuePermissions.Update }, null); StorageCredentials creds = new StorageCredentials(sas); var queue1 = new CloudQueue(queue.Uri, creds); try { queue1.AddMessage(new CloudQueueMessage("This is a test message")); } catch (StorageException excep) { //Get 403 error here } 中也没有Exists方法。编写了一个简单的辅助方法来进行检查:


推荐问答