为什么我无法使用 Azure 服务总线队列获取队列消息?

Why am I not getting queue messages using Azure Service Bus Queue?

我正在关注如何在 Azure 文档中使用服务总线队列的文档。

我创建了 2 个不同的 Web 应用程序来测试使用队列来处理我需要处理的项目。我创建了一个项目来将消息发布到队列中,然后另一个应用程序应该监听队列来处理消息。

我成功地将消息发布到队列,我可以看到 Azure 门户中的队列长度为 3。因此应该有 3 条消息等待我处理。但是,当我 运行 具有 QueueClient.OnMessage 的 Web 应用程序时,没有消息被推送。这样做时我还缺少其他东西吗?

var client = QueueClient.CreateFromConnectionString(ConnectionString, "TestQueue");

        var options = new OnMessageOptions
        {
            AutoComplete = false,
            AutoRenewTimeout = TimeSpan.FromMinutes(1)
        };

        // Callback to handle received messages.
        client.OnMessage((message) =>
        {
            try
            {
                // Process message from queue.
                var messageBody = message.GetBody<string>();
                // Remove message from queue.
                message.Complete();
            }
            catch (Exception)
            {
                // Indicates a problem, unlock message in queue.
                message.Abandon();
            }
        }, options);
    }
}

两个应用程序中的 ConnectionString 相同,因此没有区别。 这是我用来连接并向队列发送消息的代码。

var client = QueueClient.CreateFromConnectionString(ConnectionString, "TestQueue");
        var message = new BrokeredMessage(value);

        message.Properties["TestProperty"] = "This is a test";
        message.Properties["UserId"] = "TestUser";

        client.Send(message);

如果有人对发生这种情况的原因有任何见解,我们将不胜感激。

所以事实证明,我在尝试连接到服务总线时 运行 遇到了 407 需要代理身份验证错误,我在尝试通过其他应用程序进行调试时注意到了这一点。 我所要做的就是将以下内容添加到 web.config 的 system.net 部分,一旦我这样做,我就能够接收消息。

<defaultProxy useDefaultCredentials="true">
<proxy bypassonlocal="True" usesystemdefault="True"/>
</defaultProxy>