【发布时间】:2014-02-14 06:45:29
【问题描述】:
场景
在服务器 Machine 1 上安装了一个 windows 服务 作为本地系统。 该服务有一些方法可以及时执行。
有一个 WCF 网络服务在 IIS 上以 网络服务 身份在不同的服务器 Machine 2 上运行。
下面是用机器2的WCF web服务编写的sn-p代码,用来调用机器1上的Windows服务。
ServiceController service = new ServiceController("Windows Service Name", "Machine 1");
if (service != null)
{
service.ExecuteCommand((int)SimpleServiceCustomCommands.WallCacheRefresh);
}
执行上述代码时,会抛出异常。
例外:
类型:System.InvalidOperationException。
消息:无法在计算机 机器 1 上打开 服务名称 服务。
附加信息: 消息:访问被拒绝。
尝试设置
配置1
- 将 WCF 服务的标识更改为本地系统。
- Windows 服务是本地系统
配置2
- WCF 服务是网络服务
- Windows 服务是本地服务
- 到服务exe,右键=>安全=>以用户身份添加网络服务=>并授予所有权限。
配置 3
- WCF 服务是网络系统。
- windows 服务是本地服务
- 运行 => services.msc => 选择服务 => 右键单击 => 属性 => 登录 => 选择允许服务与桌面交互。
配置4
- WCF 服务是网络系统。
- windows 服务是本地服务
- 运行 => services.msc => 选择服务 => 右键单击 => 属性 => 登录 => 选择此帐户 => 将网络服务添加为无密码用户。
配置5
- WCF 服务是网络服务
- Windows 服务是本地服务
- 到服务 exe,右键单击 => 安全 => 在用户中添加机器 2 以供访问=> 并授予所有权限。
上述方案均无效。
请帮忙。
提前致谢
【问题讨论】:
标签: c# .net web-services wcf service