安装后Windows服务无法启动

7

我创建了一个新的Windows服务,并通过Visual Studio进行安装。

安装完成后,如何启动该服务?

我需要一些可以启动进程或可执行文件的东西。

安装程序是:Visual Studio Installer - Setup Project。

有什么帮助吗?

我的问题如下:

  1. 为什么服务没有启动?

  2. 我如何控制安装后发生的事情?代码在哪里?

谢谢!


1
这个问题需要进一步澄清。当您尝试启动服务时出现了什么错误? - Tejs
7个回答

10

即使您将启动类型设置为自动,它也不会在计算机重新启动之前自动启动您的服务。您可以通过创建服务安装程序类的AfterInstall事件处理程序,使用ServiceController Start方法启动服务,如下所示。

public serviceInstaller()
{
    this.AfterInstall += new InstallEventHandler(serviceInstaller_AfterInstall);
}

void serviceInstaller_AfterInstall(object sender, InstallEventArgs e)
{
    ServiceController sc = new ServiceController(serviceInstaller.ServiceName);
    sc.Start();
}

你也可以使用Visual Studio事件窗口创建事件。

如何通过VS创建事件


无法工作,显示错误“未安装服务和回滚”。 - Ahmad

5

要启动您的服务,您可以执行以下命令:

net start YourServiceName

或者前往控制面板 -> 管理工具 -> 服务,选择您的服务并点击启动。

上述完整路径也取决于您实际使用的Windows版本。

即使您没有使用任何日志记录,在一般情况下,服务故障都会记录在Windows事件日志中,因此打开事件查看器并查看最新事件。


1
没有错误。服务很好,如果我自己启动它,它可以正常工作。问题是我希望在安装后它可以自动启动 >< - Alon M
好的,就像其他人告诉你的那样,在服务安装程序中指定启动模式为自动。 - Davide Piras
这就是你要找的内容:http://pietschsoft.com/post/2009/11/06/dotNet-Windows-Service-Installer-And-Auto-Start-After-Installation.aspx - Davide Piras
或者这个链接,就像我在我的答案中发布的一样:http://devblog.grinn.net/2008/02/windows-services-in-c-part-3-getting.html - Pierre-Luc Champigny

0
在ServiceInstaller类属性中将启动类型设置为自动(可以在设计文件中完成)。

服务本身是自动的,我已经安装好了一切。但是我需要手动启动服务,它不能自己启动... - Alon M

0
需要安装Windows服务(如果您尝试调试,它应该会告诉您该怎么做),然后在服务器管理器中启动。然后您可以附加到它。

说实话,它们有点难调试。


0
这个服务具体是做什么的?它是否打开了 SQL 连接? 是否在寻找一个文件? 在你尝试启动它后,在事件查看器中检查该服务安装的位置是否有错误,这将让我们更好地理解问题所在。

没有错误,服务正常,问题是我需要在安装后自己启动它。而我希望它可以自动启动。<> - Alon M
好的,我已经创建了一个Windows服务,然后创建了一个Visual Studio安装程序。它运行得很好!我可以自己启动服务,一切正常。但是,如果我在安装后不手动启动它,它就不会自动启动。我该如何做到安装后它能自动启动呢? - Alon M

0

如果你没有对让问题变得易懂有兴趣,那么理解你的问题是不可能的。

然而从我的假设来看,

前往 Visual Studio 工具 => Visual Studio 命令提示符 使用命令 net start <>

如果启动服务失败,请检查事件日志(在运行对话框中键入 eventvwr.msc),以查看是否有任何相关错误记录。


好的,我已经创建了一个Windows服务。然后创建了一个Visual Studio安装程序。它运行得很好!我可以自己启动服务,一切正常。但是>如果我在安装后不手动启动它,它就无法启动。我该如何做到在安装后它能够自动启动? - Alon M
你可以通过多种方式启动服务,其中之一是使用服务安装程序类并在安装后事件中启动它。请参考此处:https://dev59.com/m3NA5IYBdhLWcg3wPbWe - humblelistener

0

您的Windows服务在某些系统中运行。

如果您在手动/自动安装后遇到某些系统无法启动Windows服务的错误,那么这意味着您的代码正在抛出未处理的异常。这很难调试,但有一些选项可供选择。

  1. 请参阅Windows事件查看器。

Event Viewer - eventvwr.msc

通常,您可以通过转到计算机/服务器管理器,然后单击事件查看器-> Windows日志->应用程序来访问此功能。您可以在此处查看引发异常的内容,这可能有所帮助,但您无法获得堆栈跟踪。 Event Viewer Log Image

  1. 在服务启动方法中添加try/catch块。

  2. 检查您是否使用了任何热代码(例如:“D:\”)。该驱动器在已安装的系统中不可用。

这将非常有帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接