次の方法で共有


メッセージ ログの表示

このトピックでは、メッセージ ログを表示する方法について説明します。

サービス トレース ビューアーでのメッセージ ログの表示

メッセージは、WCF によって処理されるときに変換されます。 そのため、ログに記録されるメッセージには、ネットワーク上のコンテンツではなく、ログに記録された時点のメッセージのコンテンツのみが反映されます。

メッセージ ログの出力にはメッセージの転送形式との関係がないため、メッセージ ログは常にデコードされたメッセージを出力します。 メッセージ ログを正しく構成している場合は、ログに記録されたメッセージはプレーン テキストにする必要があります。 たとえば、ログに記録されるメッセージの形式 (プレーン テキスト) は、バイナリ メッセージ エンコーダーの使用の影響を受けません。

XmlWriterTraceListener の出力は、一連の XML フラグメントを含むファイルです。 ファイルが有効な XML ファイルではないことに注意してください。 メッセージ ログ ファイルを表示するには、 サービス トレース ビューアー ツール (SvcTraceViewer.exe) を使用することをお勧めします。 このツールの使用方法の詳細については、「 相関トレースの表示とトラブルシューティングにサービス トレース ビューアーを使用する」を参照してください。

[サービス トレース ビューアー] の [メッセージ] タブに メッセージ が表示されます。処理エラーの原因または関連するメッセージは、エラーの重大度に応じて黄色 (警告レベル) または赤 (エラー レベル) で強調表示されます。 メッセージをダブルクリックすると、処理要求のコンテキストでメッセージ トレースが表示されます。

メッセージにヘッダーがない場合、 <header/> タグはログに記録されません。

クライアント、リレー、およびサービスによってログに記録されたメッセージの表示

環境には、メッセージをリレーに送信するクライアントが含まれている場合があり、その後、メッセージがサービスに転送されます。 3 つの場所すべてでメッセージ ログが有効になっていて、3 つのメッセージ ログがすべて サービス トレース ビューアー ツール (SvcTraceViewer.exe) で同時に表示されると、メッセージ ログの交換が正しく表示されません。 これは、メッセージ ヘッダー内の CorrelationIdActivityId が、すべての送受信ペアで一意ではないためです。

この問題を解決するには、次のいずれかの方法を使用できます。

Message outgoingMessage = Message.CreateMessage(incomingMessage.Version, incomingMessage.Headers.Action, incomingMessage.GetReaderAtBodyContents());  
  
for (int i = 0; i < incomingMessage.Headers.Count; i++)  
{  
   if (incomingMessage.Headers[i].Name.Equals("ActivityId", StringComparison.InvariantCultureIgnoreCase) ||  
incomingMessage.Headers[i].Name.Equals("Action", StringComparison.InvariantCultureIgnoreCase))  
   {  
      continue;  
    }  
    outgoingMessage.Headers.CopyHeaderFrom(incomingMessage, i);  
}  

不正確なメッセージ ログ コンテンツの例外的なケース

次の条件では、ログに記録されるメッセージは、ネットワーク上に存在するオクテット ストリームの正確な表現ではない可能性があります。

  • BasicHttpBinding の場合、/addressing/none 名前空間内の受信メッセージのエンベロープ ヘッダーがログに記録されます。

  • 空白が一致しない場合があります。

  • 受信メッセージの場合、空の要素は異なる方法で表すことができます。 たとえば、<tag/ の代わりに<tag></tag>>

  • 既知の PII ログが既定で無効になっている場合、または明示的な設定 enableLoggingKnownPii="true"

  • エンコードは UTF-8 への変換に有効です。

こちらも参照ください