方案
计算机1 在服务器计算机1 上安装了 Windows服务 本地系统。 该服务有一些方法可以及时执行。
WCF网络服务在其他服务器计算机2 的IIS上以网络服务身份运行。
以下是在Machine 2的WCF Web服务中编写的代码片段,用于在Machine 1上调用Windows服务。
ServiceController service = new ServiceController("Windows Service Name", "Machine 1");
if (service != null)
{
service.ExecuteCommand((int)SimpleServiceCustomCommands.WallCacheRefresh);
}
执行上述代码时,会抛出异常。
例外:
类型:System.InvalidOperationException。
消息:无法在计算机计算机1 上打开服务名称服务。
其他信息: 消息:访问被拒绝。
尝试设置
配置1
配置2
配置3
配置4
配置5
以上所有情况均无效。
请帮忙。
提前感谢
答案 0 :(得分:0)
在一台计算机上运行在网络服务帐户下的服务将在其连接的任何其他计算机上标识为其运行的计算机的计算机帐户。
因此,在机器1上,您应该为 machine 2 设置权限以访问Windows服务。
或者,我自己的偏好是为两个服务选择不同的方式进行交流。通过服务控制管理器进行通信似乎有点笨拙。
在NetworkService帐户的上下文中运行的服务将计算机的凭据提供给远程服务器。
您需要设置的权限位于服务的安全描述符上 - 而不是exe文件。有关调整安全描述符的各种方法,请参阅this question(关于非管理员,但适用类似的注意事项)。