Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.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,我在我们的项目中添加了一个新的工人角色来处理打外线电话。它提取呼叫以离开服务总线队列。 我制作了一个小的控制台应用程序,把东西扔到队列上,这样我就可以检查它是否工作了。不幸的是,似乎我的应用程序放入队列的任何内容都会立即(或几乎立即?)放入死信队列。我查看了队列的属性,可以看到 MessageCount 5 ActiveMessageCount 0 DeadLetterMessageCount 5 TransferMessageCount 0 AvailabilityStatus Availab

我在我们的项目中添加了一个新的工人角色来处理打外线电话。它提取呼叫以离开服务总线队列。
我制作了一个小的控制台应用程序,把东西扔到队列上,这样我就可以检查它是否工作了。不幸的是,似乎我的应用程序放入队列的任何内容都会立即(或几乎立即?)放入死信队列。我查看了队列的属性,可以看到

MessageCount 5
ActiveMessageCount 0
DeadLetterMessageCount 5
TransferMessageCount 0
AvailabilityStatus Available
EnableDeadLetteringOnMessageExpiration False
worker角色试图从队列中取出内容,但它所做的只是空值。
队列设置与正在工作的其他队列相同。我放在队列中的对象几乎由所有原语组成,标记为[MessageContract]和[Serializable]。所有成员都标记为[MessageHeader]。
我还试着使用我们用于另一个队列的对象,只是为了看看会发生什么,而且这个对象也会立即死掉

我不明白。很明显,随着队列大小的增加,该对象正在进入队列。但它只是死信马上,我不知道什么原因可能会发生,除了超时的事情

进一步信息:使用服务总线资源管理器查看,由于超出MaxDeliveryCount,消息似乎是死信。这似乎意味着,如果接收消息失败超过10次,它将把消息转移到死信队列。这部分问题解决了,但我在worker角色代码中添加了一个调试点,其中从未发生任何错误。我的

BrokeredMessage message = Client.Receive()

总是返回null,所以它甚至没有时间做任何错误。我想实际的Receive()调用中出现了一些问题?

结果表明,在MessageContract中有一个Uri就足以让它在反序列化过程中的某个地方失败。所以Client.Receive();尝试了10次,总是失败,然后它就被写上了死信。
我原以为URI是可序列化的,但通过服务总线将它们放到一起似乎有问题。无论如何,在我的情况下,将Uri更改为字符串并没有什么大不了的,现在一切都好了。

您能提供更多的代码吗?请说明您是如何创建客户端的(对于发送者和接收者),以及您是如何将消息推送到队列上的。很高兴我看到了这一点。非常感谢您回来回复自己的帖子。我自己也有同样的问题,并且发现很难调试。对我来说,这是间歇性的,毫无帮助。