对服务中的NullReference异常进行故障排除

时间:2020-03-05 18:49:01  来源:igfitidea点击:

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

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

有任何想法吗?

解决方案

回答

我们可以在触发异常之前将调试器添加到正在运行的进程。这应该使我们更好地了解应用程序的最新情况。

回答

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

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

我们已经看到的另一件事与临时文件有关,该服务是我们在windows \ temp目录中创建大量临时文件时发现的,这些文件创建了诸如65000个文件,从而达到了目录可以容纳的极限。 。

问候,
克里斯

回答

一些调试方法:

  • Windows事件日志中是否还有其他信息?
  • 我相信我们应该能够在Windows服务中侦听诸如Application_Exception之类的全局异常事件。我不记得确切的名字,但是我们可以从那里进行最后的转储堆栈跟踪。
  • 我们应该可以在服务模式下开始调试项目。

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

回答

以前,我已经解决过这类问题,如果我们还没有找到答案,我建议我们采取以下措施:

  • 在所有正在使用的第三方应用程序和库中启用跟踪/日志记录,以使错误记录到文件中,而不是stdout或者stderr。通常,我们会从中找到线索。
  • Windows服务可能依赖于某些Windows网络设置才能在启动之前就位。这可能是由于环境(如其他人所建议的PATH)或者由于对其他服务的"依赖"所致。

杰伊...