2013-06-12 96 views
0

我已经创建了一个Windows服务来在服务启动时发送邮件。当我调试服务并通过代码运行服务时,服务可以正常发送邮件。但是,我安装后,该服务无法正常工作。我安装服务后不发送任何邮件。安装后Windows服务未运行

任何人都可以请建议我的解决方案?

回答

3

当服务帐户运行时,该服务很可能无法执行一项或多项操作。

检查Windows事件日志中是否有任何相关的错误消息。作为一项测试,您可以将您的服务配置为与您登录的用户一样运行(只是为了确保该问题是基于权限的......不要将该配置保留为活动状态,因为它是主要的安全漏洞)。

+0

非常感谢。 –

0

调试服务有点困难。 使用try..catch块将消息写入每个方法中的文件;例如

try 
{ 
    .. 
} 
catch(Exception ex) 
{ 
    SaveMessage(ex.ToString()); 
} 

保存信息的方法是:

static void SaveMessage(string s) 
{ 
    StreamWriter sw = new StreamWriter(@"C:\service_exceptions_file.txt", true); 
    sw.WriteLine(s); 
    sw.Close(); 
}   

然后你会看到哪里出了问题。

您也可以通过上述方法在代码中添加一些信息,看看哪些代码部分没有问题

+0

如果您只想将字符串保存到文件中,您可以使用“File.WriteAllText”。 (http://msdn.microsoft.com/en-us/library/ms143375.aspx) – Tamir

0

在你Main()方法的工作,只是ServiceBase.Run(ServicesToRun);前添加以下行:

#if DEBUG 
      while(!Debugger.IsAttached) 
      { 
       Thread.Sleep(1000); 
      } 
#endif 

然后安装您的服务并启动它。 启动时,将调试器附加到您的服务进程(Debug Menu => Attach to process),您应该可以调试它。

不要忘记在启动服务之前设置断点。