0

私は、WPFアプリケーションによってホストされている非常に単純なWCFプロジェクトを使用しています。基本的には、PC上のデータを処理するための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"];

サービスコールごとに。

私のサービスへの呼び出しを検出できる、より一般的なキャッチオールイベントはありますか?おそらく、私が完全には理解していない多くのBehaviour/ChannelDispatcherタイプの1つによって起動されたものがあります。

助けてくれてありがとう、トム

4

1 に答える 1