Azure Service Bus Relay - 服务重启后502 Bad Gateway

时间:2012-05-29 21:44:58

标签: wcf azure wcf-binding azure-web-roles azureservicebus

我们正在使用Azure Service Bus Relay将我们的内部部署WCF服务连接到Azure托管的Web角色。当我们升级我们的本地WCF服务时,在服务总线主机与继电器重新建立之后,我们总是通过Azure Service Bus从我们的前几个请求中获得 502 Bad Gateway 响应( 我们没有得到“没有服务托管在指定的地址。”因为服务托管得当。)

在给定的超时期限之后 - 似乎错误消失并且通过中继正确处理WCF请求。我们将basicHttpRelayBindingHTTP 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行为以及如何修复它。

1 个答案:

答案 0 :(得分:4)

在将内部部署的WCF服务连接到Azure托管的Web角色时,我已经看到了这样的问题,这些问题主要是由于在内部部署网络中使用代理。在任何企业IT环境中,所有计算机网络设置都设置为使用代理服务器自动检测,或者如果您有多个代理服务器,则实际设置选择哪个。当WCF服务连接外部世界时,它会通过相同的代理设置,实际上会改变连接它的动态并引入行为。

通过将 UseDefaultWebProxy设置为false ,您要求Web服务不使用计算机专用代理并使用用户设置,这是您的Web服务配置的一部分。

我认为您可以很好地禁用Web代理并查看其工作原理。另请尝试使用服务跟踪查看器查看相关跟踪和疑难解答here.