【发布时间】:2011-10-03 19:29:43
【问题描述】:
我正在创建的应用程序有问题。我正在尝试通过我的 C# 应用程序启动 Windows 服务。当我单击我的开始按钮时,看起来一切都通过了,但是当我登录服务器时,该服务仍然没有显示它正在运行。但是,第二次运行它时,我得到一个异常,说明该服务的实例已经在运行。当我再次登录服务器时,服务似乎已停止。有人见过这个吗?
这是我的代码。
try
{
while (reader.Read())
{
int timeoutMilliseconds = 1000;
string serviceName = reader["ServiceName"].ToString();
string permission = reader["Permission"].ToString();
if (permission == "E")
{
lblServStartSuccess.Visible = true;
ServiceController service = new ServiceController(serviceName);
TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
}
else
{
lblServErrorStart.Visible = true;
}
}
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
编辑:这是我在一项服务中收到的例外情况:
System.InvalidOperationException:服务逻辑磁盘管理器 在计算机“.”上找不到管理服务。 ---> System.ComponentModel.Win32Exception:指定的服务没有 作为已安装服务存在 --- 内部异常堆栈跟踪结束
我知道该服务存在。我是否需要在服务前面添加一些内容来告诉它要查看哪个服务器?
【问题讨论】:
-
您确定服务没有卡在启动状态吗?我记得服务控制面板在显示这一点方面并不出色(至少在某些 Windows 版本之前)
-
“当我登录服务器时”是什么意思 - 您是否尝试在不同的机器上使用 SCM?
-
是的,我正在从远程服务器运行 Web 服务。我正在使用具有管理员访问权限的帐户。我不确定它是否卡住了。我的超时时间是否太短而超时?
-
哦,有问题的两个系统都在运行 Server 2003。
-
1 秒对于远程服务启动来说非常短。将其更改为 60 秒,看看是否有区别。
标签: c# windows-services