【发布时间】:2013-03-26 20:17:17
【问题描述】:
我们无法确定为什么 Azure BasicHttpRelay 在没有任何详细信息的情况下偶尔会抛出 FaultException。我们已启用 WCF 诊断跟踪,但可用的堆栈跟踪信息仍然相同。 WCF 客户端通道似乎在短时间内失败,然后很快返回。
我们确实缓存了 WCF 通道(例如CreateChannel),但这是我们第一次遇到这种奇怪的行为。我们有其他 Azure 服务总线中继解决方案可以很好地使用这种方法。
错误信息:
处理请求时遇到错误。
堆栈跟踪:
在 System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime 操作,ProxyRpc& rpc) 在 System.ServiceModel.Channels.ServiceChannel.Call(字符串操作,布尔单向,ProxyOperationRuntime 操作,Object[] 输入,Object[] 输出,TimeSpan 超时) 在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage 方法调用,ProxyOperationRuntime 操作) 在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage 消息) 在 [0] 处重新抛出异常: 在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg) 在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32 类型) 在 [我们的 WCF 方法] ...FaultException - FaultCode 详细信息:
名称: ServerErrorFault
命名空间: http://schemas.microsoft.com/netservices/2009/05/servicebus/relay
IsPredefinedFault: false
IsReceiverFault: 假
IsSenderFault: 假
肥皂消息
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header />
<s:Body>
<s:Fault>
<faultcode xmlns:a="http://schemas.microsoft.com/netservices/2009/05/servicebus/relay">a:ServerErrorFault</faultcode>
<faultstring xml:lang="en-US">There was an error encountered while processing the request.</faultstring>
<detail>
<ServerErrorFault xmlns="http://schemas.microsoft.com/netservices/2009/05/servicebus/relay" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" />
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
通过调试,我们可以看到服务器正确响应了消息请求(通过IDispatchMessageInspector),但客户端未能正确处理响应(IClientMessageInspector 报错) .在客户端通道看似更正 自身后,后续的中继请求将成功。这些故障似乎是间歇性的,而不是负载驱动的。我们从未在 Azure 中继之外使用 basicHttpBinding 看到这些 FaultException 错误。
有人有什么建议吗?我们正在使用 Azure SDK 1.8。
我尝试使用 owner 共享密钥配置一个新的服务总线中继命名空间,但仍然看到相同的结果。
【问题讨论】:
-
这些情况多久发生一次?它们不仅仅是随机预期的瞬态问题,是吗?
-
它们的行为似乎每 10-20 秒发生一次短暂的中继中断 - 因为多个请求在 2-3 秒内收到此错误,只有一个用户负载(平均 3 个请求/秒)。应用程序池在服务托管端永远不会死亡或回收 - 所以它一定是中继本身的问题。
-
我建议加载系统以获得一些非常一致的指标。它或多或少地每 10 秒发生一次还是随机的?即使您不知道来源是什么,也请尝试更多地了解行为,以便我们能够看到模式并做出有根据的猜测。
-
最好联系支持人员解决此问题。
-
@TheDude - 感谢您的提示!我们确实发现这是 Relay 的 Microsoft 错误。他们目前正在努力解决问题。
标签: wcf azure azure-sdk-.net azure-servicebusrelay basichttprelaybinding