你可以創建你的實現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
}
}
並將其安裝
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)
{ }
}
一旦你已取得了InstanceContext可以使用IncomingChannels屬性來獲取被傳入到服務實例的sessionful渠道。
難道你不能只使用WCF中的內置性能計數器來檢查?似乎很多不必要的工作來處理自己,真的..... – 2009-07-23 13:58:37