我有一个天蓝色的QueueTrigger
函数,当我使用Azure Storage Explorer
工具添加消息时会处理这些消息。
我现在需要在C#中以编程方式将消息添加到队列中。我创建了一个.Net Core控制台应用程序,安装了WindowsAzure.Storage
NuGet程序包。
在Azure中,我进入了函数存储帐户,并从“访问键”部分复制了连接字符串for the below code:
static void Main(string[] args)
{
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("RedactedConnectionString");
// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("test-messages");
// Create the queue if it doesn't already exist.
//queue.CreateIfNotExists();
// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage("Hello, World");
var result = queue.AddMessageAsync(message);
Console.WriteLine("");
}
此代码运行后,没有消息排队,如果我检查result
变量,我所看到的就是:
我在这里做什么错了?
答案 0 :(得分:2)
您的问题是您没有使用await
,并且从未执行过创建消息的请求。
您可以使用最新的C#(当前为7.3)来使用async Main
,并使它看起来像这样:
static async void Main(string[] args)
{
...
await queue.AddMessageAsync(message);
...
}
或者您可以在异步呼叫上使用GetAwaiter().GetResult()
:
queue.AddMessageAsync(message).GetAwaiter().GetResult();