C# Microsoft Azure服务总线超时异常

C# Microsoft Azure服务总线超时异常,c#,azure,timeout,azureservicebus,C#,Azure,Timeout,Azureservicebus,我们有一个在Microsoft Azure云平台上运行的应用程序。一些组件之间的通信是使用服务总线进行的。一切正常,直到最近我们才开始出现以下类型的超时异常: 调用QueueClient x.Send(…) 在[0]处重试异常:在 Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult 结果)在 Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingEl

我们有一个在Microsoft Azure云平台上运行的应用程序。一些组件之间的通信是使用服务总线进行的。一切正常,直到最近我们才开始出现以下类型的超时异常:

调用
QueueClient x.Send(…)

在[0]处重试异常:在 Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult 结果)在 Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult.End(IAsyncResult 结果)在 Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.RequestAsyncResult.b_u4(RequestAsyncResult 此PTR,IAsyncResult r)位于 Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult 结果)

调用
NamespaceManager x.GetQueue(…)

进度队列处理失败。System.TimeoutException:请求 已在60000毫秒后超时。成功完成 无法确定请求。如有其他疑问,请联系 确定操作是否已成功。 TrackingId:bdffb6bd-5367-4573-aaa3-8ea9a03f5a2b,时间戳:2015年5月28日 上午8:39:46-->System.Net.WebException:请求已中止:请求已终止 请求被取消。在 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在 Microsoft.ServiceBus.Messaging.ServiceBusResourceOperations.GetAsyncResult`1.b_49(GetAsyncResult`1 此PTR,IAsyncResult r)位于 Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult 结果)

调用
NamespaceManager x.SubscriptionExists(…)

执行定期工作时发生异常:System.TimeoutException:请求 已在00:10:00毫秒后超时。圆满完成 无法确定请求的类型。还应提出其他问题 以确定操作是否已成功。服务器堆栈 跟踪:在[0]处重试异常:在 Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult 结果)在 Microsoft.ServiceBus.NamespaceManager.OnEndSubscriptionExists(IAsyncResult 结果)在 Microsoft.ServiceBus.NamespaceManager.SubscriptionExists(字符串 主题路径,字符串名称)

调用
QueueClient x.Receive(…)

进度队列处理失败。 Microsoft.ServiceBus.Messaging.MessagingCommunicationException:错误 在与服务总线通信期间。检查连接 信息,然后重试。--> System.ServiceModel.CommunicationObjectFaultedException:内部 服务器错误:服务器未提供有意义的答复;这 可能是由于会话过早关闭造成的。 TrackingId:04ba0220-0350-4806-9c65-c2bba9671054,时间戳:2015年5月28日 13:00:55服务器堆栈跟踪:在[0]处重试异常:在 Microsoft.ServiceBus.Common.ExceptionDispatcher.Throw(异常 例外情况)在 Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult 结果)在 Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult.End(IAsyncResult 结果)在 Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingElement.DuplexRequestSessionChannel.EndRequest(IAsyncResult 结果)在 Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.RequestAsyncResult.b_u4(RequestAsyncResult 此PTR,IAsyncResult r)位于 Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult 结果)

这些异常显然与ServiceBus有关,它们是不确定的。抛出它们的函数,例如,
Send
GetQueue
SubscriptionExists
,每分钟调用次数不超过100-120次。我们没有改变代码中的任何内容,增加超时值(甚至是荒谬的高值,比如10分钟)也没有帮助。另外,我们不认为这是与网络相关的问题(在我们这方面),因为当应用程序从不同的地方运行时,会发生相同的错误


最近还有其他人遇到过这种例外吗?微软方面有什么问题吗?还是我们遗漏了什么?

几周前,我们的Service Bus应用程序突然出现了无法解释的时间问题,该应用程序已投入生产数月。我们的手机仍能正常工作,但每打几次电话就需要10秒以上的时间,而正常情况下这些电话是100-200毫秒。这种情况持续了几周,我花了大部分时间试图弄清楚到底发生了什么,但一直没有解决,因为问题突然消失了


我们确实了解到,当问题发生时,我们在同一数据中心和其他数据中心创建的用于测试的新服务总线名称空间并没有表现出相同的问题。服务总线组没有提供任何帮助,只说响应时间没有保证,只有SLA有保证。

当我运行的代码开始生成超时异常时,我遇到了类似的问题。经研究发现,防火墙封锁了用于通信的端口。然而,端口80和443仍然开放。因此,添加以下代码行对我很有用:

ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Https;

如果您有类似的问题,请参见