Azure Storage包无法获取CloudQueue非异步方法问题咨询
解决Azure Storage队列同步方法找不到的问题
嘿,这个问题我之前帮不少开发者踩过坑!你遇到的CloudQueue同步方法(比如CreateIfNotExists、AddMessage)缺失的情况,大概率是因为你安装的WindowsAzure.Storage包版本太新了——微软在后续版本迭代里,为了推行异步优先的设计思路,逐步把这些同步方法给移除了,现在只留下了异步版本(带Async后缀的那些)。
给你两个靠谱的解决方向,按需选:
方向一:改用异步方法(首推)
既然微软已经把异步API作为主推方案,这也是未来的趋势,建议直接把代码改成异步写法。给你个简单的示例参考:
原来报错的同步代码:
CloudQueue queue = /* 你的队列实例 */; queue.CreateIfNotExists(); queue.AddMessage(new CloudQueueMessage("test content"));
改成异步版本后:
// 记得把入口方法标记为async static async Task Main(string[] args) { CloudQueue queue = /* 你的队列实例 */; await queue.CreateIfNotExistsAsync(); await queue.AddMessageAsync(new CloudQueueMessage("test content")); // 获取消息的异步示例 CloudQueueMessage message = await queue.GetMessageAsync(); if (message != null) { // 处理完消息记得删除 await queue.DeleteMessageAsync(message); } }
方向二:回退到保留同步方法的旧版本包
如果你暂时不想改代码,也可以卸载当前的包,安装v8.7.0版本——这个版本还保留了同步方法(只是标记为过时,但完全能正常编译运行)。
操作步骤很简单:
- 在Visual Studio的NuGet包管理器里,找到
WindowsAzure.Storage,点卸载 - 重新搜索这个包,选择版本8.7.0安装就行
不过要提醒你,旧版本后续不会再收到安全更新和功能迭代,长期来看还是建议慢慢迁移到异步API哦。
另外,也确认下你有没有正确引用命名空间:using Microsoft.WindowsAzure.Storage;和using Microsoft.WindowsAzure.Storage.Queue;,不过根据你说能成功创建队列,应该命名空间是没问题的,核心还是版本的锅。
内容的提问来源于stack exchange,提问作者Iain
相关产品推荐
相关产品推荐

