我创建了一个Windows服务并在服务器上安装。它似乎正常工作,即执行其预期功能。但是,当我通过远程桌面登录到服务器时,我看到以下消息:
无法从命令行或调试器启动服务。必须首先使用installutil.exe安装Windows服务,然后使用ServerExplorer、Windows服务管理工具或NET START命令启动。
我点击并转到服务管理器检查服务,它已经成功启动。没有报告错误。
我已将其安装为使用本地系统作为“登录为”。
谢谢。
我创建了一个Windows服务并在服务器上安装。它似乎正常工作,即执行其预期功能。但是,当我通过远程桌面登录到服务器时,我看到以下消息:
无法从命令行或调试器启动服务。必须首先使用installutil.exe安装Windows服务,然后使用ServerExplorer、Windows服务管理工具或NET START命令启动。
我点击并转到服务管理器检查服务,它已经成功启动。没有报告错误。
我已将其安装为使用本地系统作为“登录为”。
谢谢。
请将 Program
类中的 Main
方法更改为以下内容:
/// <summary>
/// The main entry point for the application.
/// </summary>
private static void Main()
{
var myService = new MyService();
if (Environment.UserInteractive)
{
Console.WriteLine("Starting service...");
myService.Start();
Console.WriteLine("Service is running.");
Console.WriteLine("Press any key to stop...");
Console.ReadKey(true);
Console.WriteLine("Stopping service...");
myService.Stop();
Console.WriteLine("Service stopped.");
}
else
{
var servicesToRun = new ServiceBase[] { myService };
ServiceBase.Run(servicesToRun);
}
}
你需要在服务类中添加一个Start
方法:
public void Start()
{
OnStart(new string[0]);
}
在项目属性的“应用程序”选项卡中,将项目的输出类型从“Windows应用程序”更改为“控制台应用程序”。现在,您只需按F5即可开始调试,但仍然可以将可执行文件作为Windows服务运行。
前往 App.config
找到
<setting name="RunAsWindowsService" serializeAs="String">
<value>True</value>
设置为False
按下CTRL-ALT-CANC(*),然后转到“服务”选项卡。有一个服务列表,搜索您需要启动的服务,选择它并单击“启动”。
如果没有找到该服务,则可能已被卸载、未(正确?)安装或由于其他原因,Windows不知道您的服务。
(*) 或 CTRL-ALT-DEL(ete) 或其他键,具体取决于键盘语言。