1

自家製の WCF サービスを呼び出すと、「メッセージ バージョンが認識されません」というエラーが表示されます。このサービスは、F5 ロード バランサーの背後にある DMZ 内にあります。F5 は SSL 証明書を管理し、メッセージを HTTP (HTTPS ではなく) 経由でサーバーに転送します。F5 経由でルーティングしない内部サーバーに展開された同じサービスは正常に動作します。

途中でメッセージのバージョンを調べたい。サーバー スタック トレースは、IIS が WCF フレームワークの内部で .NET コードにハンドオフし、メッセージをコードに転送する前に爆発しているように見えます。

クライアント側の Fiddler とサーバーの IIS ログで遊んでいますが、どこにでもつながるメッセージの詳細が見つからないようです。サービス トレース ログ (以下の構成) も構成しましたが、結果が追加されていません。ツール、エラーの原因、またはツールが私に示していることを理解していない可能性があるその他の提案はありますか?

  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="traceListener"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData= "c:\Temp\Traces.svclog" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

更新 - 解決されたコアの問題 私が抱えていた特定の問題は、F5 ロード バランサーが期待どおりにサーバーにリダイレクトするだけでなく、それ自体にリダイレクトすることに基づいていることがわかりました。途中でリクエストの状態を追跡する方法についてもっと知ることは、まだ役立つと思います。

4

1 に答える 1

1

いくつかの点を確認してください。

  1. wcf プロセスには c:\temp ディレクトリへの書き込みアクセス権がありますか? (ProcessMonitor は、このようなことを検証するのに非常に役立ちます: http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

  2. シリアル化の問題である可能性があるようです。ここで説明されているように、System.Runtime.Serialization にリスナーを追加してみてください: http://msdn.microsoft.com/en-us/library/ms733025.aspx

于 2012-12-05T18:42:36.000 に答える