Фильтрация сообщений WCF - PullRequest
0 голосов
/ 12 декабря 2011

Когда включено ведение журнала сообщений, я вижу их все, но нуждаюсь в фильтрации:

<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 сочла это плохим и удалила?). Вопросы:

  1. Почему нет заголовка SOAP (остальные сообщения, переданные по net.tcp, имеют его)?
  2. Как записать XPath для фильтрации только getData вызовов?
...