Когда включено ведение журнала сообщений, я вижу их все, но нуждаюсь в фильтрации:
<MessageLogTraceRecord>
<Addressing>
<Action>http://myuri/IManager/getData</Action>
<To>http://localhost/MyService.svc</To>
</Addressing>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<getData xmlns="http://myuri/IManager">
............
</getData>
</s:Body>
</s:Envelope>
</MessageLogTraceRecord>
Это то, что я вижу в журнале при вызове веб-службы Java через http. Обратите внимание, что заголовок SOAP отсутствует, поэтому я не могу фильтровать по имени действия, как в примере MSDN . Однако фильтрация по телу запрещена. Хорошо, я попробовал эти выражения XPath (и многие другие):
<filters>
<add>/Addressing/Action[contains(text(), "http://myuri/IManager/getData")]</add>
<add xmlns:soap="http://www.w3.org/2003/05/soap-envelope">/soap:Envelope[not(soap:Header)]</add>
<filters>
Но все же все сообщения были зарегистрированы (WCF сочла это плохим и удалила?). Вопросы:
- Почему нет заголовка SOAP (остальные сообщения, переданные по net.tcp, имеют его)?
- Как записать XPath для фильтрации только
getData
вызовов?