1

我有一个运行各种系统监控操作的 Windows 服务。但是,在运行SNMP相关检查时,我总是得到一个NullReference exception.

通过用户界面(在我的用户名和密码下)运行代码时运行良好,但作为服务运行时总是出错。

我尝试以不同的用户帐户(包括我的)运行该服务,但没有成功。我尝试用调用(从)替换SNMP监视代码,但这会产生相同的错误。PowerShell cmdlet get-snmp/n NetCmdlets

我正在使用的应用程序是PolyMon

有任何想法吗?

4

4 回答 4

2

您可以在触发异常之前将调试器附加到正在运行的进程。这应该让您更好地了解应用程序的情况。

于 2008-09-07T17:06:45.790 回答
2

一些调试方法:

  • Windows 事件日志中是否有任何其他信息?
  • 我相信您应该能够在 Windows 服务中收听某种全局异常事件,例如 Application_Exception。我不记得确切的名称,但您可以从那里找到最后的转储堆栈跟踪。
  • 您应该能够在服务模式下开始调试项目。

一些代码片段/堆栈跟踪/信息肯定会有所帮助。

于 2008-09-07T18:00:13.620 回答
1

我们已经看到了一些事情 - 更多关于交互式与服务之间的差异,但可能会有所帮助......

我们看到的一件似乎不相关的事情是用户路径与系统路径上的差异。

我们看到的另一件事与临时文件有关——我们的服务在 windows\temp 目录中创建了很多文件——当它创建了 65000 个这些文件并因此达到了目录可以容纳的限制时,我们对其进行了跟踪...

问候,克里斯

于 2008-09-07T17:53:07.240 回答
1

我之前已经解决过这类问题,如果您还没有找到答案,我建议如下:

  • 在您使用的所有第三方应用程序和库中启用跟踪/日志记录,以便将错误记录到文件而不是 stdout 或 stderr。很多时候,你会从这些中找到线索。
  • 您的 Windows 服务可能依赖于在启动之前设置的某些 Windows 网络。这可能是由于环境(PATH,正如其他人所建议的那样)或由于对其他服务的“依赖性”。

杰…………

于 2008-09-16T14:31:02.330 回答