场景
windows服务作为本地系统安装在服务器Machine 1上。该服务有一些方法可以及时执行。
IIS上有一个WCF web服务作为网络服务标识运行在另一个服务器Machine 2上。
下面是在Machine 2的WCF web服务中编写的代码片段,用于调用机器1上的Windows服务。
ServiceController service = new ServiceController("Windows Service Name", "Machine 1");
if (service != null)
{
service.ExecuteCommand((int)SimpleServiceCustomCommands.WallCacheRefresh);
}当执行上述代码时,就会引发异常。
异常:
类型: System.InvalidOperationException.
消息:无法在计算机 Machine 1上打开服务名称服务。
附加信息:消息:访问被拒绝。
尝试设置
配置1
配置2
配置3
配置4
配置5
上述方案都不起作用。
请帮帮忙。
预先感谢
发布于 2014-02-14 08:00:51
在一台计算机上的网络服务帐户下运行的服务将在它所连接的任何其他计算机上标识为它正在运行的计算机的计算机帐户。
因此,在机器1上,您应该为机器2设置访问windows服务的权限。
或者,我个人的偏好是,为这两种服务选择一种不同的沟通方式。通过服务控制管理器进行通信似乎有点笨重。
NetworkService
在NetworkService帐户上下文中运行的服务将计算机的凭据显示给远程服务器。
您需要设置的权限在服务的安全描述符上,而不是在exe文件上。有关调整安全描述符的各种方法,请参见这个问题 (这是关于非管理员的,但也适用类似的注意事项)。
https://stackoverflow.com/questions/21772561
复制相似问题