我有一个应用程序,其中使用 IP 地址将 PC(其他和自己的)添加为服务器,并且状态设置为“正在运行”。在数据库中为此创建一个条目。
假设我添加了 2 台服务器 10.51.1.159 和 10.51.1.136,刷新时 10.51.1.159 的状态是“正在运行”(因为它是本地的),而 10.51.1.136 的状态是“错误”(因为它是远程的)。当我尝试调试时,会为 10.51.1.136 引发以下异常。
远程服务器抛出异常 InvalidOperationException
System.InvalidOperationException: Cannot open notifyservice service on computer '10.51.1.136'. ---> System.ComponentModel.Win32Exception: Access is denied
。
执行此操作的代码如下:
static public void GetServerStatus(DataTable dt, string service)
{
GetServerStatusColumns(dt);
// get the service status for each server in the datatable
ServiceController control = new ServiceController();
foreach (DataRow row in dt.Rows)
{
try
{
control.ServiceName = service;
control.MachineName = row["SERVER_ADDRESS"].ToString();
string status = control.Status.ToString(); // This is not set for 10.51.1.136, jumped to catch block after this.
row["SERVICE_STATUS_ID"] = Convert.ToInt32(Enum.Format(control.Status.GetType(), control.Status, "d")) - 1;
row["SERVICE_STATUS"] = status;
if (status == "Running")
{
row["SERVICE_CANSTART"] = false;
row["SERVICE_CANSTOP"] = true;
}
else
{
row["SERVICE_CANSTART"] = true;
row["SERVICE_CANSTOP"] = false;
}
}
catch (InvalidOperationException exp)
{
row["SERVICE_STATUS_ID"] = 5; // stopped
row["SERVICE_STATUS"] = "Error";
string excep = Convert.ToString(exp);
row["SERVICE_CANSTART"] = false;
row["SERVICE_CANSTOP"] = false;
}
}
}
我检查了防火墙是否阻塞,但似乎防火墙不是问题。请帮助我。提前致谢。