2

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

在给定的超时时间之后 - 似乎错误消失了,WCF 请求通过中继正确处理。我们在禁用 HTTP Keep-AlivesbasicHttpRelayBinding的情况下使用(以防止)。CommunicationExceptions

这是我们在 WCF 请求从 Web 角色到中继期间捕获的错误消息:

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>

我们目前正在尝试禁用 WCF 绑定( via )中的默认 Web 代理,但想知道其他人是否在 Azure 服务总线中看到了相同的 HTTP 502 行为以及如何修复它。useDefaultWebProxy=false

4

1 回答 1

4

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

通过将UseDefaultWebProxy 设置为 false,您要求 Web 服务不使用特定于机器的代理并使用作为 Web 服务配置一部分的用户设置。

我认为您可以很好地禁用网络代理并查看它是如何工作的。还可以尝试在此处使用服务跟踪查看器查看相关跟踪和故障排除

于 2012-05-30T21:06:26.970 回答