2012-01-25 9 views
9

WCFクライアントとJava Webサービスの間に面白い互換性の問題があります。要するに、ヘッダーが生成される方法が問題を引き起こしていることがわかりました.WCFがカスタムヘッダーの名前空間で行っていることと同じように、ヘッダーのActivityIdとAction要素が問題を引き起こしています。私はwsdl.exeでWSDLをうまく使い果たしましたが、WCFはJava Webサービスが好きではない方法でヘッダーを操作しているようです。 ActivityIdとAction要素を送信しないようにWCFクライアント用のバインディングを設定する方法はありますか?WCFリクエストからActivityIdを削除する

+0

あなたは私たちを見ることができます:

<source name="System.ServiceModel" switchValue="Information" propagateActivity="false"> <listeners> <add name="xml"/> </listeners> 

ActivityIdが有効になっている場合、それは疑うことを知らないのサーバーを破ることができるヘッダーは、SOAPに以下の注入クライアント側はconfigを生成しましたか? –

答えて

9

クライアントでトレースを有効にしていますか?私はそれが終わりから終わりの追跡のためにサービスに追跡活動を流そうとしていることとして活動IDを加えるものだと思います。アクティビティトレースフラグをオフにすると、アクションヘッダーのコメントが表示されます。

+0

これらの要素を追加するのはトレースでした。トレースを無効にすることで問題を解決できました。 Java Webサービスは、SOAPメッセージを非常にうまく解釈しませんでした(何らかの奇妙な名前空間の問題)。 – CodeMonkey1313

+0

どうすればいいですか?それはオフになっていますか? – irperez

+0

@irperez私は 'ActivityId' SOAPヘッダーを削除するために非アクティブにする必要がある設定を絞りました。 – StuartLC

4

この問題は、WCFクライアントが非WCFサーバーに接続しようとすると一般的に発生します。 JAX-WSは、WebSphereなど

ただ、リチャードの命の恩人の解答とアドレスの@ irperezさんのコメントに追加し、WCF診断トレーシング中にActivityIdを追加することからWCF診断を防ぐために無効にする必要があり、実際の設定は削除するために、次のとおりです。

  • propagateActivity
false

すなわち変更

0123セット
  • switchvalueから ActivityTracingを削除します
    <system.diagnostics> 
        <sources> 
        <source name="System.ServiceModel" switchValue="Information, ActivityTracing" 
          propagateActivity="true"> 
        <listeners> 
         <add name="xml"/> 
        </listeners> 
        </source> 
    ... 
    

    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
        <s:Header> 
        <ActivityId CorrelationId="5de75017-da08-4ac2-84f2-5374953cc2a1" 
         xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics"> 
         9f076849-e76e-4675-84c1-5026b1c2eb1a 
        </ActivityId> 
        </s:Header> 
    
    関連する問題