• EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は参考用に提供されます。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、 を参照してください。

問題を作成する

エージェントがWCFアプリ(.NET)のContent-Typeヘッダーを変更します

問題

.NETエージェントがWindows Communication Foundation(WCF)アプリケーションに対して有効になっている場合、応答ヘッダーContent-Typeが予期せずapplication/xmlに変更されます。

解決

基本的な解決策

コメントコメント

クロスアプリケーショントレーシング(CAT)機能を無効にします。

CAT設定を変更する方法についてお読みください。

CATを有効のままにする必要がある場合は、他のソリューションを参照してください。

CATの代わりにディストリビューティッド(分散)トレーシング機能を使用します。

DT設定を有効にする方法についてお読みください。

DTはトレースを実行するための新しく改善された方法であり、CATと比較してNew Relic UIの機能が強化されています。

DTは応答ヘッダーを変更する必要がなく、応答ヘッダーを変更しても影響を受けません。

メッセージとOperationContextの両方に目的のContent-Typeヘッダーを追加します。

このソリューションでは、アプリケーションコードを変更する必要があります。

原因

クロスアプリケーショントレーシング(CAT)機能は、.NETエージェントでデフォルトで有効になっています。CATは、リクエストメッセージと応答メッセージの両方にヘッダーを追加することによって機能します。

これは、エージェントで発生する内容です。

  1. WCFサービスメソッドの実装が実行されます。
  2. エージェントは、CATヘッダーを使用してHttpResponseMessagePropertyインスタンスをOperationContext.Current.OutgoingMessagePropertiesに追加することで、WCF応答にCATヘッダーを追加しようとします。
  3. カスタムDispatchMessageFormatterが実行され、新しいメッセージが作成されます。ここで、予期されるContent-Typeヘッダーが新しいメッセージに直接追加されます。
  4. MicrosoftのWCF実装は、応答メッセージで定義されたメッセージプロパティをOperationContextで定義されたメッセージプロパティとマージしようとします。詳細については、ImmutableDispatchRuntime.cs に関するこのMicrosoftリファレンスを参照してください。
  5. HttpResponseMessagePropertyはマージをサポートしていないため、メッセージで定義されている値の代わりに、OperationContextで定義されている値が使用されます。
  6. その結果、フォーマットされたメッセージに最初に追加されたContent-Typeヘッダーは破棄され、デフォルトのContent-Typeヘッダーが使用されます。

エージェントは複数のWCFバインディングをサポートする必要があるため、CATヘッダーをOperationContextに追加する必要があります。

Copyright © 2024 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.