2

オンプレミスの WCF サービスを Azure でホストされている Web ロールに接続するために、 Azure Service Bus Relayを使用しています。オンプレミスの WCF サービスをアップグレードすると、サービス バス ホストがリレーを使用して自身を再確立した後、Azure Service Bus を介した最初のいくつかの要求から常に502 Bad Gateway応答が返されます ( "サービスは適切にホストされているため、指定されたアドレスでホストされているサービスはありません)。

所定のタイムアウト期間の後、エラーが消え、WCF 要求がリレーを介して適切に処理されるようです。HTTPキープアライブを無効にして使用basicHttpRelayBindingしています(防止するため)。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>

現在、WCF バインディングで既定の Web プロキシを無効にしようとしています(経由useDefaultWebProxy=false) が、Azure Service Bus で同じ HTTP 502 の動作を他の人が見たことがあるかどうか、およびそれを修正する方法があるかどうか疑問に思っています。

4

1 に答える 1

4

オンプレミスの WCF サービスを Azure でホストされている Web ロールに接続するときにこのような問題が発生しましたが、これらはほとんどの場合、オンプレミス ネットワークにプロキシがあることが原因です。エンタープライズ IT 環境では、すべてのマシンのネットワーク設定がプロキシ サーバーを使用するように設定されています。WCF サービスが外部の世界に接続すると、同じプロキシ設定を通過し、実際に接続のダイナミクスが変更され、動作が導入されます。

UseDefaultWebProxy を falseに設定すると、マシン固有のプロキシを使用せず、Web サービス構成の一部であるユーザー設定を使用するように Web サービスに要求します。

Web プロキシを無効にして、それがどのように機能するかを確認するには、順調に進んでいると思います。また、ここで相関トレースとトラブルシューティングを表示するために Service Trace Viewer を使用してみてください。

于 2012-05-30T21:06:26.970 に答える