WCF在不同的用户会话下具有命名管道

joh*_*ohn 5 session wcf pipe

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

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

这是我的问题;

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

  • WCF如何保持我的服务器的两个实例(在不同的用户会话下运行)不会相互干扰?(例如,用户会话'A'下的客户端始终在用户会话'A'下与服务器通信,而从不在用户会话'B'下运行服务器

提前致谢.

Ono*_*ots 2

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

/sf/answers/723988331/