2012-12-21 90 views
26

我已经创建了一个Windows服务并将其安装在服务器上。它似乎工作正常,即做它的意图。但是当我通过远程桌面登录服务器时,我收到以下消息:无法从命令行或调试器启动服务

无法从命令行或调试器启动服务。必须首先安装Windows 服务(使用installutil.exe),然后使用ServerExplorer,Windows服务管理工具 或NET START命令启动 。

我点击,然后去服务资源管理器检查服务,它的开始好的。没有错误报告。

我已经安装了它,所以它使用本地系统作为“登录为”。

谢谢。

+0

你确定正是服务抛出的错误信息? –

+0

只有当我安装我的Windows并且服务读取XML文件并且需要连续运行时才会出现消息。我会在圣诞节过后看看这个,因为那时我正在工作。这似乎很奇怪,因为我安装了我的服务。但就像我说的那样,但不想当用户通过远程桌面登录时出现此消息 – Boomerang

+0

[Windows服务启动失败]的可能重复(http://stackoverflow.com/questions/5157176/windows-service-start-失败) –

回答

37

变化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服务运行。

+0

@Tadej你重建过吗? – MattCom

+0

@MattCom我找到了另一种方式来做到这一点。但不记得究竟是什么。 – JedatKinports

-4

按下CTRL-ALT-CANC(*),并转到服务选项卡。有一个服务列表,搜索你需要启动的服务,选择它并点击“开始”。 如果它不存在,也许它已被卸载,没有(正确地?)安装,或由于某些其他原因您的服务不为Windows所知。

(*)或CTRL-ALT-DEL(ete)或其他,取决于键盘语言。

+0

取消?那是删除吗? – Moira

+0

谢谢,我添加了一个(*)澄清。我不认为这取决于键盘。 – fresko

-4

转到App.config中

查找

<setting name="RunAsWindowsService" serializeAs="String"> 
<value>True</value> 

设置为False

相关问题