Я использую действительно простой проект WCF, который размещается в приложении WPF.Он в основном работает как REST-сервер для хранения данных на моем ПК.Нет IIS, и он работает как SingleInstance. Я хочу посмотреть, какие IP-адреса обращаются к MyService, и какой WebMethod они пытаются вызвать.
Хорошо, поэтому я могу иметь событие как часть моей службы, объявленное в классе обслуживания.сам.Вот некоторый код, который запускает его, все работает точно так же, как и ожидалось (без пламени о m_
, пожалуйста;)):
MyService ds = new MyService(); // It's not really called this :)
ds.Request += new EventHandler(ds_Request); // I want to avoid this
ds.SomePropertySetFromMyRehostingClient = "something"; // SingleInstance now required
m_Service = new ServiceHost(ds, new Uri(GetServerHostUri()));
m_Service.Description.Behaviors.Find<ServiceBehaviorAttribute>().InstanceContextMode = InstanceContextMode.Single;
m_Service.BeginOpen(new TimeSpan(0, 0, 5), new AsyncCallback(EndStartService), null);
Затем в каждом методе службы я могу вызвать это событие, чтобы мое приложение зналочто кто-то пытался его использовать.Гениально, но давайте посмотрим правде в глаза, это ужасно.
Я должен написать что-то вроде:
var who = OperationContext.Current.IncomingMessageProperties.Via;
var what = OperationContext.Current.IncomingMessageProperties["UriTemplateMatchResults"];
для каждого вызова службы .
Есть ли более общийсобытие-ловушка, которое может обнаружить вызов к моему сервису? Вероятно, один из них был вызван одним из многих типов поведения / ChannelDispatcher, который, я правда, не совсем понимаю.
Спасибо за вашу помощь,Том