我目前正在使用c#中的一个项目,其中我有一个运行为LocalSystem的服务,以及一个为每个登录用户运行的用户应用程序(托盘应用程序).
我需要在两者之间进行沟通.
最初我在服务上使用NetTcpBinding设置端点,以便客户端连接并提供其用户名.此后,客户各自自己建立一个端点; net.tcp:// localhost:5001 / UserApp /’username’,启用端口共享.然后,服务可以连接到该端点,知道用户名.
虽然,当试图使程序与UAC良好协作时,我遇到了一些问题.启用UAC的端口共享要求用户注册<‘allowAccounts> SMSvcHost.exe.config,虽然我已经添加了用户,但在尝试注册端点时仍然会出现以下错误信息.
The service endpoint failed to listen on the URI
‘net.tcp://localhost:5001/UserApp/myuser’ because access was denied.
Verify that the current user is granted access in the appropriate
allowAccounts section of SMSvcHost.exe.config.
我也尝试过切换到NetNamedPipeBinding,这在托管用户应用程序时效果很好.但是当使用此绑定时,服务无法访问客户端打开的端点.
因此,基本上我需要一种方法让单个服务为同一台机器上的多个用户应用程序提供端点,并且该服务能够连接到多个用户应用程序并将事件更新发送到多个用户应用程序.
有什么建议?
最佳答案 在这种情况下,我会考虑使用回调通道而不是在客户端上打开新服务(好吧 – 它几乎相同,但它适合WCF框架和设置).
你可以在这里阅读:
What you need to know about One-Way Calls, Callbacks, And Events