我正在尝试确定为什么我可以成功安装在许多机器上的.Net服务无法在某些机器上启动。
当在这些机器上启动服务时,服务会立即停止,因此我的假设是用户没有足够的权限来安装服务或者服务存在问题; 但是,这两个条件都是错误的(服务可用且他们有足够的权限)。
有哪些步骤可以帮助我确定服务无法启动的原因?
我正在尝试确定为什么我可以成功安装在许多机器上的.Net服务无法在某些机器上启动。
当在这些机器上启动服务时,服务会立即停止,因此我的假设是用户没有足够的权限来安装服务或者服务存在问题; 但是,这两个条件都是错误的(服务可用且他们有足够的权限)。
有哪些步骤可以帮助我确定服务无法启动的原因?
应用程序事件日志应包含服务启动期间发生的任何 .Net 异常的详细信息。这可能有助于诊断问题。
或者,您可以在应用程序启动时添加一些调试代码(或跟踪代码),并使用来自Sysinternals的 DebugView 查看其运行到哪里。
通过查看@Matthew Steeples和@Ben M的事件日志,我弄清楚了这个问题。
问题是当服务连接到服务器时,它会在启动时写入事件日志;然而,此计算机的事件日志已满,因此当服务尝试写入事件日志时,它失败了,导致它抛出异常,而这个异常无法写入满事件日志。
所以,要点在于,如果您正在写入事件日志,请确保它不是满的,或者您正在处理异常!
请查看 事件查看器 -> Windows日志 -> 应用程序
这里应该显示未捕获的异常。在我的情况下,我期望当前目录是服务EXE的位置,但实际上它是 %WinDir%\System32
,所以我需要修改我的应用程序来获取EXE目录,并在访问文件时使用它。