我有一个运行各种系统监控操作的Windows服务。但是,当运行 SNMP 相关检查时,我总是收到 NullReference 异常。当通过用户界面(在我的用户名和密码下)运行时,代码运行良好,但作为服务运行时总是出错。我尝试以不同的用户帐户(包括我的)运行该服务,但没有成功。我尝试通过调用 PowerShell cmdlet get-snmp(来自 /n NetCmdlet)来替换 SNMP 监视代码,但这会产生相同的错误。

我正在使用的应用程序是 波利蒙.

有任何想法吗?

有帮助吗?

解决方案

一些调试方法:

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

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

其他提示

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

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

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

我们看到的另一件事与临时文件有关 - 我们的服务在 windows emp 目录中创建了很多文件 - 当它创建了大约 65000 个这样的文件并因此达到了目录可以容纳的限制时,我们追踪到了这一点...

问候,克里斯

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

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

杰.........

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top