.net - WCF:如何检测到 WCF PerSession 服务的新连接?

标签 .net service wcf wcf-sessions

我有一个自承载的 WCF 服务,其 InstanceContextMode 设置为 PerSession。
如何从主机应用程序检测到我的服务的新客户端连接( session ),并使用该新 session 上下文通过其事件观察我的服务?

类似于:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class MyService : IMyService {
    public event EventHandler ClientRegistered;
    public event EventHandler FileUploaded;
}

并且从我的主机应用程序能够做到:

ServiceHost svc = new ServiceHost(typeof(MyService));
svc.Open();

// something like:
svc.NewSession += new EventHandler(...)

//...

public void SessionHandler(InstanceContext SessionContext) {
    MySessionHandler NewSessionHandler = new MySessionHandler(SessionContext);

    // From MySessionHandler I handle the service's events (FileUploaded, ClientRegistered) 
    // for this session and notify the UI of any changes.
    NewSessionHandler.Handle();
}

最佳答案

您可以在服务契约(Contract)中使用 IsInitiating

[OperationContract(IsInitiating = true)]
   void FirstMethod();

请参阅以下链接:

http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/8137553a-8657-475e-b9ca-5914d9c9d57a

关于.net - WCF:如何检测到 WCF PerSession 服务的新连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2442004/

相关文章:

.net - 在 .NET Web 应用程序中使用 CaSTLe DynamicProxy 的性能建议

.net - Internet Explorer - 如何转义单引号

c# - 使用 nhibernate 映射递归关联

.net - 如何使用 FtpWebRequest (.NET) 更改目录?

Android:唤醒锁和处理方向变化

android - 位置监听器从服务工作,但不是 IntentService

WCF 服务。在哪里添加。 .svc 文件

wcf - WCF 是否可以传输 EF 的虚拟属性?

service - Web 服务和来自同一客户端的多个请求

wcf - 更改命名空间前缀 WCF 信封