无法使用c#

时间:2019-04-16 10:40:35

标签: c# azure .net-core

我有一个天蓝色的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变量,我所看到的就是:

enter image description here

我在这里做什么错了?

1 个答案:

答案 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();