我们正在使用Azure Service Bus Relay将我们的内部部署WCF服务连接到Azure托管的Web角色。当我们升级我们的本地WCF服务时,在服务总线主机与继电器重新建立之后,我们总是通过Azure Service Bus从我们的前几个请求中获得 502 Bad Gateway 响应( 我们没有得到“没有服务托管在指定的地址。”因为服务托管得当。)
在给定的超时期限之后 - 似乎错误消失并且通过中继正确处理WCF请求。我们将basicHttpRelayBinding
与HTTP Keep-Alives disabled一起使用(以阻止CommunicationExceptions
)。
以下是我们从Web角色WCF请求中继期间捕获的错误消息:
System.ServiceModel.ProtocolException :内容类型application / soap + xml;响应消息的charset = utf-8与绑定的内容类型不匹配(text / xml; charset = utf-8)。 如果使用自定义编码器,请确保正确实现IsContentTypeSupported方法。 Ť 他的第一个550字节的响应是......
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://schemas.microsoft.com/netservices/2009/05/servicebus/relay/FaultAction</a:Action>
</s:Header>
<s:Body>
<s:Fault>
<s:Code>
<s:Value>s:Receiver</s:Value>
<s:Subcode>
<s:Value>s:Receiver</s:Value>
</s:Subcode>
</s:Code>
<s:Reason>
<s:Text xml:lang="en-US">50200: Bad Gateway.TrackingId:8bd21714-ae0f-41b5-b810-851b59a345fb_28,TimeStamp:5/29/2012 8:27:14 PM</s:Text>
</s:Reason>
</s:Fault>
</s:Body>
</s:Envelope>
我们目前正在trying disabling the default web proxy in the WCF Bindings(通过useDefaultWebProxy=false
),但是想知道其他人是否看到了与Azure Service Bus相同的HTTP 502行为以及如何修复它。
答案 0 :(得分:4)
在将内部部署的WCF服务连接到Azure托管的Web角色时,我已经看到了这样的问题,这些问题主要是由于在内部部署网络中使用代理。在任何企业IT环境中,所有计算机网络设置都设置为使用代理服务器自动检测,或者如果您有多个代理服务器,则实际设置选择哪个。当WCF服务连接外部世界时,它会通过相同的代理设置,实际上会改变连接它的动态并引入行为。
通过将 UseDefaultWebProxy设置为false ,您要求Web服务不使用计算机专用代理并使用用户设置,这是您的Web服务配置的一部分。
我认为您可以很好地禁用Web代理并查看其工作原理。另请尝试使用服务跟踪查看器查看相关跟踪和疑难解答here.