C# ServiceProcess.ServiceController是如何工作的?
设置: 我们有两台服务器。它们位于不同的子网上,但仍然可以相互通信 问题: 服务器1用于使用C# ServiceProcess.ServiceController是如何工作的?,c#,.net,api,service,windows-services,C#,.net,Api,Service,Windows Services,设置: 我们有两台服务器。它们位于不同的子网上,但仍然可以相互通信 问题: 服务器1用于使用ServiceController.Status呼叫成功查询服务器2的服务,直到我们的IT人员收紧了两个子网之间的防火墙(我们失去了对服务器2的RDP访问,并且ServiceController.Status从服务器1到服务器2的呼叫开始失败) 它稍微放松了防火墙(因此服务器2的RDP现在可以工作),但我们的ServiceController.Status调用仍然失败(错误是:无法打开计算机上的服务控制管
ServiceController.Status
呼叫成功查询服务器2的服务,直到我们的IT人员收紧了两个子网之间的防火墙(我们失去了对服务器2的RDP访问,并且ServiceController.Status
从服务器1到服务器2的呼叫开始失败)
它稍微放松了防火墙(因此服务器2的RDP现在可以工作),但我们的ServiceController.Status
调用仍然失败(错误是:无法打开计算机上的服务控制管理器)
问题:
ServiceProcess.ServiceController
如何执行其任务?它在工作时是否使用特殊的TCP端口
我怀疑防火墙正在阻止远程访问服务器2上的服务控制器,因此我想告诉我们的IT员工我们需要打开哪些端口
我已经看过了,但还没有找到我需要的东西。查看这篇TechNet文章:。它包含可由RPC使用的协议及其关联套接字端口的表,.NET ServiceController类依赖于这些端口。您的IT员工可能在工作繁忙时关闭了其中一个或多个端口(一些端口比其他端口更重要,具体取决于有多少其他选项可用),从而导致RPC无法运行。您确定这是RDP而不是RPC吗?RDP是远程桌面协议,用于终端服务,即Windows远程桌面。RPC是远程过程调用,用于进程间通信。RPC的工作方式多种多样,这取决于两个进程之间可用的通信模式(这反过来又取决于两个进程之间分隔了多少金属)。@KeithS:是的,我指的是RDP。在ServiceController调用开始失败的同时,我们失去了远程桌面访问。好吧,好吧,ServiceController不使用RDP实现其功能,所以你找错了方向,让RDP正常工作,并认为这将解决你的ServiceController调用问题。看看我的答案,确保IT人员提供对每个协议和服务类别列出的至少一个端口的访问。@KeithS:是的,但我认为根本原因可能是相同的(防火墙太严格)。这就是为什么我想看看我们的调用是如何工作的。