У меня есть служба WCF со следующим контрактом:
[ServiceContract(Namespace="http://myNamespace.org/")]
public interface IMyService
{
[OperationContract]
string Invert(string s);
[OperationContract]
string ToUpper(string s);
}
Клиенты вызывают оба метода, Invert
и ToUpper
. Представьте, что я хочу использовать ведение журнала сообщений, но единственный метод, который меня интересует, это ToUpper
, поскольку другой метод широко используется, и регистрация всех сообщений приведет к повреждению журнала;)
Здесь , Читал, как фильтровать сообщения, которые записываются в лог. Но я, должно быть, делаю что-то не так, поскольку мой журнал остается пустым ... Моя конфигурация выглядит так
...
/soap:Envelope/soap:Header/a:Action[starts-with(text(),'http://myNamespace.org/IMyService/ToUpper')]
Если я применяю этот фильтр, в журнал не попадет ни одного сообщения ... Так что же я делаю не так в связанном примере выше?
Без фильтра xml-трассировка сообщения по умолчанию (метод ToUpper
, вызванный с параметром строки hello
) выглядит следующим образом:
0
3
0
8
MY-Machine
POST
uIDPozEtlPQCjkhCodYdPWh6joUAAAAAamILDP7v3kG5sY6zKsB7HPPiLBWr+AVGmfFDQbk8GYAACQAA
"http://myNamespace.org/IMyService/ToUpper"
157
text/xml; charset=utf-8
gzip, deflate
100-continue
localhost:8731
http://localhost:8731/Design_Time_Addresses/MyService/
http://myNamespace.org/IMyService/ToUpper
hello
Обновление: Для всех, кто заинтересован в решении, я наконец-то получил его работоспособность с помощью jasso, спасибо:
/soap:Envelope/soap:Header/a:Action[starts-with(text(),'http://myNamespace.org/IMyService/ToUpper')]
Затем я отредактировал свой интерфейс и добавил методы с Method1
до Method3
. Моя цель состояла в том, чтобы регистрировать все, кроме сообщений, связанных с Method1
и Method3
. Я сделал это с помощью следующего фильтра:
/soap:Envelope/soap:Header/a:Action[starts-with(text(),'http://myNamespace.org/IMyService/Method1')=false() and starts-with(text(),'http://myNamespace.org/IMyService/Method3')=false()]
Таким образом, в журнал регистрируются только сообщения, относящиеся к Invert
, ToUpper
и Method2
.
Это может быть более чистым, чтобы справиться с этим с двумя отдельными фильтрами, но на данный момент я вполне доволен этим.