使用訊息記錄的篩選條件
這個範例示範如何建立訊息記錄的篩選條件。只記錄符合篩選條件準則的訊息,便可以減少不必要的記錄輸出,並使得偵錯工作更為輕鬆。具體來說,這個範例會示範如何根據 SOAP 動作項目進行篩選。
注意: |
---|
這個範例不包括程式碼。您可以將此範例中提供的組態新增至應用程式的組態檔,然後在您案例的環境下觀察訊息記錄的變化。 |
篩選訊息記錄
您可以使用 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主題。
若要設定、建置及執行範例
若要執行這個範例,請將前面列出的其中一個組態區段新增至應用程式的組態檔。由於訊息記錄的設定在整個應用程式定義域中都有效,因此記錄篩選條件會影響記錄在應用程式定義域中的所有訊息。
執行應用程式。請注意,只有符合篩選條件的訊息才會記錄到磁碟中。
請參閱
其他資源
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.