IInstanceContextInitializerの実装を作成できます。これは、新しいInstanceContextが作成されると通知されます。
public class MyInstanceContextInitializer : IInstanceContextInitializer
{
public void Initialize(InstanceContext instanceContext, Message message)
{
// hook up to events to get notified about changes in the state of this instance context.
// remember refernce to it
}
}
とあなたがInstanceContextへのアクセスを得たら、それは
public class InstanceInitializerBehavior : IEndpointBehavior
{
public void AddBindingParameters(ServiceEndpoint serviceEndpoint, BindingParameterCollection bindingParameters)
{ }
//Apply the custom IInstanceContextProvider to the EndpointDispatcher.DispatchRuntime
public void ApplyDispatchBehavior(ServiceEndpoint serviceEndpoint, EndpointDispatcher endpointDispatcher)
{
MyInstanceContextInitializer extension = new MyInstanceContextInitializer();
endpointDispatcher.DispatchRuntime.InstanceContextInitializers.Add(extension);
}
public void ApplyClientBehavior(ServiceEndpoint serviceEndpoint, ClientRuntime behavior)
{ }
public void Validate(ServiceEndpoint endpoint)
{ }
}
あなたがサービスインスタンスに着信さsessionfulチャンネルを取得するためにIncomingChannelsプロパティを使用することができます添付。
WCFで組み込みのパフォーマンスカウンタを使用して確認できませんでしたか? .....実際には、自分で処理するために多くの不必要な作業があるように思えます。 –
これは良い解決策ですが、これはpfカウンタをプログラムで使用するため、パフォーマンスが低下する可能性があります。 –