共用方式為


使用訊息記錄的篩選條件

這個範例示範如何建立訊息記錄的篩選條件。只記錄符合篩選條件準則的訊息,便可以減少不必要的記錄輸出,並使得偵錯工作更為輕鬆。具體來說,這個範例會示範如何根據 SOAP 動作項目進行篩選。

Aa967569.note(zh-tw,VS.90).gif注意:
這個範例不包括程式碼。您可以將此範例中提供的組態新增至應用程式的組態檔,然後在您案例的環境下觀察訊息記錄的變化。

篩選訊息記錄

您可以使用 XPath 篩選條件來自訂 Windows Communication Foundation (WCF) 訊息記錄。只有通過篩選條件的訊息才加以記錄。您可以使用 XPath 語言定義篩選條件,並將它新增至組態檔的 <messageLogging> 項目。

篩選條件會列出一些條件,訊息必須符合這些條件才會加以記錄。這個範例示範如何使用特定的 SOAP 動作來記錄訊息。

根據動作進行篩選

除非服務不為作業設定自訂動作,否則訊息不一定要包含端點或合約參考。

如果不使用自訂動作,包含在每個訊息中的動作會採用下列格式。

ContractNamespace/ContractName/OperationName

ContractNamespace 包含 http://。

如果您在訊息中使用 SOAP 1.2 版信封,就可以篩選記錄以 MyContractNamespace 命名空間的 MyContractName 合約為目標的訊息,如下列組態所示。

<messageLogging logMessagesAtTransportLevel="true" logMessagesAtServiceLevel="true" >
   <filters>
      <add xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/soap:Envelope/soap:Header/a:Action[starts-with(text(),'MyContractNamespace/MyContractName')]</add>
   </filters>
</messageLogging>

下列範例會新增一個篩選條件,其中指定了追蹤和訊息記錄範例之加入要求的命名空間和合約名稱。

<filters>
   <add xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/soap:Envelope/soap:Header/a:Action[starts-with(text(),'http://Microsoft.ServiceModel.Samples/ICalculator/Add')]</add>
</filters>

如果使用了自訂動作,即可使用訊息記錄,透過下列動作來篩選訊息。

<add xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/soap:Envelope/soap:Header/a:Action/text()="MyAction"</add>

如果是 SOAP 1.1 版信封,則必須以 https://schemas.xmlsoap.org/soap/envelope/ 來取代 SOAP 命名空間。您應該針對不同版本的定址方式進行類似的變更。

就 HTTP 基本設定檔而言,標頭不是信封的一部分,而是當做 HTTP 標頭來傳送。您應該適當地修改篩選技術。

如需訊息記錄的詳細資訊,請參閱Configuring Message Logging主題。

若要設定、建置及執行範例

  1. 若要執行這個範例,請將前面列出的其中一個組態區段新增至應用程式的組態檔。由於訊息記錄的設定在整個應用程式定義域中都有效,因此記錄篩選條件會影響記錄在應用程式定義域中的所有訊息。

  2. 執行應用程式。請注意,只有符合篩選條件的訊息才會記錄到磁碟中。

請參閱

其他資源

Configuring Message Logging

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.