【问题标题】:Determining the reason why a .net windows-service won't start确定 .net windows-service 无法启动的原因
【发布时间】:2010-06-22 18:32:14
【问题描述】:

我正在尝试确定为什么我可以在大量机器上成功安装的 .Net 服务无法在某些机器上启动。

当服务在这些机器上启动时,服务会立即停止,所以我的假设是用户没有足够的权限来安装服务或者服务存在问题;但是,这两个条件都是错误的(服务有效并且他们有足够的权限)。

我应该采取哪些步骤来确定服务无法启动的原因?

【问题讨论】:

  • 既然是 .Net 服务,是否安装了正确版本的 .Net?
  • 是的,请参阅我的解决方案答案

标签: .net windows-services


【解决方案1】:

应用程序事件日志应包含服务启动期间发生的任何 .Net 异常的详细信息。这可能有助于诊断问题。

或者,您可以将一些调试代码(或跟踪代码)添加到您的应用程序启动中,并使用来自Sysinternals 的 debugview 来查看它的位置。

【讨论】:

  • 服务消息存储在系统日志中。
  • +1:您还可以将调试器附加到服务并单步执行。
  • @Ben M:虽然服务消息存储在事件日志中是对的,但 .net 异常会保存到应用程序日志中
【解决方案2】:

感谢查看@Matthew Steeples 和@Ben M 的事件日志,我明白了这一点。

问题是服务在连接到服务器时在启动时写入事件日志;但是,这台机器的事件日志已满,因此当服务尝试写入事件日志时失败,导致它抛出异常,该异常再次无法写入完整的事件日志。

因此,如果您正在写入事件日志,请确保它未满或您正在处理异常!

【讨论】:

  • 您好 msarchet,StackOverflow 遵循 QA 格式,而不是论坛格式。如果提供的答案足够,最好将其标记为已接受 - 发帖人将欣赏声誉积分。同样,不鼓励为您自己的问题添加答案以继续对话,而建议您编辑原始问题并添加您自己找到的任何解决方案。
  • 我要补充一点,只有在没有其他答案可以帮助您解决问题的情况下,才可以添加并接受您自己的答案(请原谅双关语)。
  • 实际上这是一种可以接受的做法,提供的答案实际上并不正确,是的,他们将我指向答案,但不是实际答案。元帖子:meta.stackexchange.com/questions/14488/…meta.stackexchange.com/questions/2800/…meta.stackexchange.com/questions/12513/…
【解决方案3】:

查看Event Viewer -> Windows Logs -> Application

这应该显示未捕获的异常。就我而言,我希望当前目录是服务 EXE 的位置,但事实证明它实际上是%WinDir%\System32,所以我需要修改我的应用程序以获取 EXE 目录并在访问文件时使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2015-09-04
    • 2022-01-19
    • 2011-08-15
    相关资源
    最近更新 更多