【问题标题】:WCF with named pipe under different user sessions不同用户会话下具有命名管道的 WCF
【发布时间】:2014-02-23 10:19:09
【问题描述】:

我有一个应用程序可以在同一个盒子上的不同用户会话下同时处于活动状态。它由一个客户端和一个服务器组成,两者都在交互式用户下运行并通过 WCF 通过命名管道进行通信。

如果我创建一个 WCF 服务器侦听,例如,“net.pipe://localhost/MyService”......服务器进程的两个实例不能存在于同一个用户会话下,但 WCF 允许两个服务器使用相同的不同用户会话下的基地址。

这是我的问题;

  • 如果WCF不使用URI作为管道名,客户端如何找到服务器?

  • WCF 如何防止我的服务器的两个实例在不同的用户会话下运行,以免相互干扰? (例如,用户会话“A”下的客户端始终与用户会话“A”下的服务器通信,而不是用户会话“B”下运行的服务器)

提前致谢。

【问题讨论】:

    标签: wcf session pipe


    【解决方案1】:

    WCF 生成一个 GUID 并将其用作命名管道的名称。

    URI 用于派生共享内存对象的位置。服务器实际上将使用要使用的命名管道的 GUID 创建该共享内存对象。客户端将读取共享内存对象以获取 GUID。

    此共享内存对象受限于用户会话。不同的用户会话意味着不同的命名管道。

    参考资料:

    http://blogs.msdn.com/b/rodneyviana/archive/2011/03/22/named-pipes-in-wcf-are-named-but-not-by-you-and-how-to-find-the-actual-windows-object-name.aspx

    https://stackoverflow.com/a/10342690/107177

    【讨论】:

    • 感谢您的链接和回答。这为我解决了问题!
    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多