我有一个net tcp PerSession WCF服务,我当前用于跟踪已连接用户(活动客户端)数量的逻辑是使用服务构造函数和心跳机制。
在构造函数中,我只是递增一个静态成员,在向客户端发送心跳的过程中,如果这些异常之一引发( TimeoutException,FaultException,CommunicationObjectAbortedException),我就会递减这个数字。
发布于 2009-07-23 11:26:13
您可以创建自己的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属性来获取传入服务实例的会话通道。
https://stackoverflow.com/questions/1171001
复制相似问题