WCF with named pipe under different user sessions

柔情痞子 提交于 2019-12-23 10:19:34

问题


I have an application that can be active simultaneously under different user sessions on the same box. It consists of a client and a server, both running under the interactive user and communicating via WCF over named pipes.

If I create a WCF server listening on, say, "net.pipe://localhost/MyService" ... two instances of the server process cannot exist under the same user session, but WCF allows two servers using this same base address under the different user sessions.

Here are my questions;

  • if WCF does not use the URI as the pipe name, how does the client find the server?

  • how does WCF keep two instances of my server, running under different user sessions, from interfering from each other? (e.g. client under user session 'A' always communicates with server under user session 'A' and never the server running under user session 'B')

Thanks in advance.


回答1:


WCF generates a GUID and uses that as the name for the named pipe.

The URI is used to derive the location of a shared memory object. The server will actually create that shared memory object with the GUID of the named pipe to use. The client will read the shared memory object to obtain the GUID.

This shared memory object is constrained to the user session. A different user session means a different named pipe.

References:

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



来源:https://stackoverflow.com/questions/21467910/wcf-with-named-pipe-under-different-user-sessions

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!