我正在努力确保我正在运行一段代码的服务器是一个Web前端服务器。我认为它可能就像这样简单:
SPServer.Local.Role.ToString().Equals("WebFrontEnd")
但是,如果您在同一个盒子上运行WFE以及app服务器等,则会返回“应用程序”并且无法将其正确识别为Web前端。
我的想法是确定Microsoft SharePoint Foundation工作流Web应用程序(服务)是否已在服务器上启动并运行。这可以通过访问Central Admin>来确定。系统设置>管理服务器上的服务。
我需要在C#中以编程方式执行此操作。我很确定这些服务及其状态可以通过powershell获得,这是一个可行的解决方案,但我不知道如何做到这一点。
编辑 - 我知道使用以下代码循环“服务”的方法:
SPServiceCollection services = SPFarm.Local.Services;
foreach (SPService service in services) {
}
但是,这包括一些看起来与“服务器上的服务”下的列表非常相似的项目,但都列出的状态为“在线”,似乎不包括此内容。
答案 0 :(得分:0)
遗憾的是,即使这样也不可靠,因为Foundation Web Application服务可以在实际上不是前端服务器的服务器上运行(即负载均衡器永远不会将流量引导到它们)。最终它是负载平衡机制所具有的服务器列表,它确定哪些服务器是真正的前端,并且因为有各种类型的负载平衡器,并且没有单个接口,所以我不相信有任何一种保证方法。确定服务器场中真正的Web前端数量。