鉴于:
– 应用程序 – 桌面GUI( WPF).NET应用程序
– 监视应用程序的 Windows服务(.NET也)
– 应用程序 – 桌面GUI( WPF).NET应用程序
– 监视应用程序的 Windows服务(.NET也)
Windows服务定期“ping”应用程序以确保它是健康的(如果它不是winservice将重新启动它).
我打算通过命名管道实现“pinging”.为了简单起见,我决定使用WCF.该应用程序托管一个WCF服务(一个操作Ping返回一些东西). Windows服务是此WCF服务的客户端,基于计时器定期调用它.
这一切都在Windows 7中.
Windows服务在LocalService下运行(在会话#0中).
桌面应用程序在当前登录的用户下运行(在会话#1中).
问题:
Windows服务无法在桌面应用程序中看到创建并正在侦听的WCF端点(使用NetNamedPipeBinding).这意味着通过wcf代理调用时,我得到了这个异常:“在本地计算机上找不到管道端点’net.pipe:// localhost / HeartBeat’”
我确信代码没问题,因为另一个桌面应用程序(在会话#1中)可以看到端点.
显然,我在处理Win32系统对象隔离的一些安全性问题.
但我相信应该有办法解决我遇到过的限制问题.
我可以牺牲WCF方法并采用原始的NamedPipe方式.