调试不会在限制性帐户下运行的Topshelf服务

时间:2009-09-30 22:47:48

标签: debugging windows-services topshelf

我使用Topshelf编写了一个Windows服务。我正在尝试将其配置为使用具有受限权限的Windows帐户运行,而不是使用LocalSystem。这也是必要的,因为我想使用集成身份验证连接到数据库。

当作为LocalSystem运行时服务工作(尽管包含凭据的数据库连接字符串)并且运行控制台应用程序作为我的受限帐户(使用runas)也可以正常工作。

但是,当我尝试启动服务时,服务控制管理器会超时等待响应:

  

该服务未及时响应启动或控制请求。

我还在Application Popup事件日志中获得以下内容:

  

应用程序错误:位于0x77e4bef7的应用程序中发生异常未知软件异常(0xc06d007e)。

应用程序执行的第一件事是写入日志文件,但是当我启动服务时它没有达到。如果我通过控制台运行,则日志记录有效。

有什么建议我可能会遗漏或者接下来会尝试什么?

3 个答案:

答案 0 :(得分:2)

这个问题似乎与服务器(域控制器)有关,而不是与TopShelf有关。使用.NET服务组件构建的服务也表现出相同的行为。

该服务在另一台计算机上(在同一域中)成功运行。

不幸的是,这无助于诊断问题,但给了我一个可接受的解决方法。

答案 1 :(得分:0)

查看MSDN文章Debugging windows services,其中介绍了如何调试Windows服务。

答案 2 :(得分:0)

我刚刚开始在.net 2.0中编写的一些服务上看到这一点。它们会在服务器启动时启动,但如果我要在一天内重新启动它们,它们将无法启动,并提供此错误消息。

他们目前在一个域名帐户下运行,该帐户具有管理员权限,但是为了踢,我将其切换到本地系统,并且服务正常启动。我停止了它,将其更改回域帐户(重新输入密码),然后按预期再次正常启动。

不知道这是否算作“修复”,但这对我有用。