Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我没有使用Azure服务总线队列获取队列消息?_C#_Azure_Azure Servicebus Queues - Fatal编程技术网

C# 为什么我没有使用Azure服务总线队列获取队列消息?

C# 为什么我没有使用Azure服务总线队列获取队列消息?,c#,azure,azure-servicebus-queues,C#,Azure,Azure Servicebus Queues,我正在遵循Azure文档中有关如何使用服务总线队列的文档 我创建了两个不同的web应用程序,使用队列测试我需要处理的项目。我创建了一个项目来将消息发布到队列中,然后另一个应用程序应该侦听队列来处理消息 <defaultProxy useDefaultCredentials="true"> <proxy bypassonlocal="True" usesystemdefault="True"/> </defaultProxy> 我成功地将消息发布到队列,我可以

我正在遵循Azure文档中有关如何使用服务总线队列的文档

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

<defaultProxy useDefaultCredentials="true">
<proxy bypassonlocal="True" usesystemdefault="True"/>
</defaultProxy>
我成功地将消息发布到队列,我可以看到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);
    }
}

如果有人能深入了解发生这种情况的原因,我将不胜感激。

因此,我在尝试连接到服务总线时遇到了407 Proxy Authentication Required错误,我在尝试通过其他应用程序调试时注意到了这一错误。 我所要做的就是在web.config的system.net部分添加以下内容,这样我就可以接收消息了

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

因此,我在尝试连接到服务总线时遇到了407 Proxy Authentication Required错误,我在尝试通过其他应用程序调试时注意到了这个错误。 我所要做的就是在web.config的system.net部分添加以下内容,这样我就可以接收消息了

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


代码在我看来是正确的。您的Web应用程序中正在运行的QueueClient代码在哪里?您确定您的QueueClient实例没有被过早处置吗?你可以考虑把你的代码提升到一个沙盒中,以验证代码+连接是否正常工作。请注意,门户在它显示的消息的计数中包含死字母。我建议调试服务总线问题。使用此选项,我将验证消息是否未移动到死信队列。它还允许您查看邮件的重试次数,以便您能够查看邮件是否被拾取,以及是否可能由于异常而被放弃。@Alex感谢您推荐ServiceBusExplorer帮助我了解我的问题。这似乎对Azure服务总线的未来使用非常有帮助。代码在我看来是正确的。您的Web应用程序中正在运行的QueueClient代码在哪里?您确定您的QueueClient实例没有被过早处置吗?你可以考虑把你的代码提升到一个沙盒中,以验证代码+连接是否正常工作。请注意,门户在它显示的消息的计数中包含死字母。我建议调试服务总线问题。使用此选项,我将验证消息是否未移动到死信队列。它还允许您查看邮件的重试次数,以便您能够查看邮件是否被拾取,以及是否可能由于异常而被放弃。@Alex感谢您推荐ServiceBusExplorer帮助我了解我的问题。这似乎对Azure服务总线的未来使用非常有帮助。