【问题标题】:Service not responding to the c# program that uses service controller on windows server 2008 r2服务没有响应在 windows server 2008 r2 上使用服务控制器的 c# 程序
【发布时间】:2011-03-02 20:06:14
【问题描述】:

我有一个 C# 程序,它充当我创建的 Windows 服务的 GUI。可以根据 GUI 中的按钮按下来停止或启动服务...启动按钮按下事件将调用以下函数。在我的普通电脑上,这段代码运行良好。但是,当我将此 GUI 应用程序放在我的服务器上时,它不会启动或停止服务。是否有我遗漏的东西,或者服务器服务与常规 PC 服务的流程不同。我正在使用 Windows Server 2008 R2 和 Vista Business...提前致谢。

  public static bool StartService(string serviceName, int timeoutMilliseconds)
    {
        ServiceController service = new ServiceController(serviceName);
        try
        {
            TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

            service.Start();
            service.WaitForStatus(ServiceControllerStatus.Running, timeout);
            if (service.Status == ServiceControllerStatus.Running)
                return true;
            else
                return false;



        }
        catch
        {
            // ...
            return false;
        }
    }

【问题讨论】:

    标签: c# windows windows-services windows-server-2008


    【解决方案1】:

    两件事:

    首先,确保您的 try/catch 块正在记录(或以其他方式通知您)任何抛出的异常。还要检查服务器事件日志是否有错误。

    其次,检查服务器上运行程序的帐户的权限。该帐户可能没有足够的权限来停止和启动您的服务,而您的 PC 上的帐户可以。

    【讨论】:

    • 对于权限 - 如果我能够在服务查看器中启动/停止服务,这是否意味着我有足够的权限,或者我还需要查看吗?
    • @Jonathan 我相信这确实意味着您有足够的权限。事件日志中有任何异常或任何内容吗?检查服务器的系统日志;我相信事件 ID 7036 记录服务启动/停止。
    • @Jay Riggs - 我查看了日志,看到一些与我的服务相关的内容,但它只说它开始和停止了。我相信基于我停止并从服务查看器启动服务的时间。没有别的东西了。我将在 catch 子句中添加一些输出语句...
    • 作为更新,我发现了异常,它说“无法在计算机上打开服务'。”是。这严格是因为应用程序没有权限吗???还是有别的东西?谢谢
    • @Jonathan 是否有任何其他异常信息可以提供进一步的线索(即内部异常)?您的服务是否有可能在启动后立即退出(可能是通过异常)?也许您可以下载一个除了运行之外什么都不做的示例服务,然后在上面尝试您的服务启动/停止程序;如果它有效,那么问题出在您的服务上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多