【问题标题】:Cannot add message to storage queue using c#无法使用 c# 将消息添加到存储队列
【发布时间】:2019-04-16 10:40:34
【问题描述】:

我有一个 azure 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 变量,我看到的只是:

我在这里做错了什么?

【问题讨论】:

  • 不一定是您的问题的原因,但是...您正在调用 Async() 方法来添加您的消息,而没有 await...
  • 我不能,因为它是一个控制台应用程序
  • @JsonStatham 你可以在 C# 7.3 ref 中使用async Main。或者对所有异步调用执行.GetAwaiter().GetResult()
  • @trailmax 你应该把你的评论作为答案。
  • @trailmax 这有效,请将您的评论变成答案!

标签: c# azure .net-core


【解决方案1】:

您的问题是您没有使用await 并且创建消息的请求从未执行。

您可以使用最新的 C#(当前为 7.3)来使用 async Main 并让它看起来像这样:

static async void Main(string[] args)
{
...
    await queue.AddMessageAsync(message);
...
}

或者您可以在异步调用中使用GetAwaiter().GetResult()

queue.AddMessageAsync(message).GetAwaiter().GetResult();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-25
    • 2015-12-13
    • 1970-01-01
    • 2016-02-22
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    相关资源
    最近更新 更多