我有一个使用 net.pipe 协议托管 WCF 服务的客户端应用程序。客户端无法与在管理员用户下运行的其他 WCF 服务通信。
我读到您无法在不同用户之间使用 net.pipe 进行通信。
有办法绕过它吗?
我读到您无法在之间使用 net.pipe 进行通信
不同的用户。
一般来说,情况并非如此。以下是我认为您所指内容的摘要:
如果您运行的操作系统早于 Windows Vista,则没有问题:任何进程都应该能够托管任何其他本地进程可访问的 WCF net.pipe 服务。
如果您在 Windows Vista 或更高版本上运行,则 WCF net.pipe 服务将只能由在同一登录会话中运行的进程访问(例如,在同一交互式用户会话中)unless托管 WCF 服务的进程正在以提升的权限 SeCreateGlobalPrivilege 运行。
Windows 服务在自己的登录会话中运行,并具有 SeCreateGlobalPrivilege 权限,因此自承载和 IIS 承载的 WCF net.pipe 服务对于同一计算机上其他登录会话中的进程可见。
在我遇到的大多数情况下,解决方法是始终将 WCF 服务托管在 Windows 服务中,如果需要在交互会话期间反转客户端和服务器角色,则使用双工协定。
也可以看看:
- 创建命名管道 (WCF) 所需的最低操作系统权限 https://stackoverflow.com/questions/4098549/minimum-os-permissions-required-to-create-named-pipe-wcf
- 在 C# 中使用 NetNamedPipeBinding 获取 EndpointNotFoundException;需要创建全局命名管道 https://stackoverflow.com/questions/7477813/getting-endpointnotfoundexception-with-netnamedpipebinding-in-c-need-to-create
- 通过命名管道从 Windows 服务(会话#0)连接到桌面应用程序(会话#1) https://stackoverflow.com/questions/4303154/connecting-via-named-pipe-from-windows-service-session0-to-desktop-app-sessi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)