我面临一个奇怪的错误。我检查服务器B上的服务器A是否正在运行特定服务。
代码示例:
Try
Dim services() As ServiceController = ServiceController.GetServices(server)
For Each service In services
If service.ServiceName = serviceName Then
If service.Status = ServiceProcess.ServiceControllerStatus.Running Then
write_log("Service is running on: " & server)
Return True
Else
Return False
End If
End If
Next
Catch ex As Exception
write_log("ERROR on getService request")
write_log(ex.ToString)
End Try
大多数时候请求都是成功的。但有时我会收到错误。 堆栈跟踪:
5316 2015-02-21 07:24:47 System.InvalidOperationException: Cannot open Service Control Manager on computer 'XXXXX'. This operation might require other privileges. ---> System.ComponentModel.Win32Exception: The RPC server is unavailable
--- End of inner exception stack trace ---
at System.ServiceProcess.ServiceController.GetDataBaseHandleWithAccess(String machineName, Int32 serviceControlManaqerAccess)
at System.ServiceProcess.ServiceController.GetServicesOfType(String machineName, Int32 serviceType)
at K2SystemInfo.K2SystemInfo.CheckIfServiceIsRunning(String serviceName, String server)
在错误发生后立即重试我可以获得服务信息。启动我的程序的服务是两台服务器上的admin。
为什么ServiceController.GetServices(服务器)有时会失败。虽然它大部分工作正常吗?
仅在Windows Server 2012 R2服务器上出现此问题。在Windows Server 2008 R2上,它工作正常。