【问题标题】:VB.net windows service works fine when ran as an exe but does nothing when installed as serviceVB.net Windows 服务在作为 exe 运行时工作正常,但在作为服务安装时不执行任何操作
【发布时间】:2022-08-11 21:05:33
【问题描述】:

我已经为我们的一个服务器创建了一个 SNMP 侦听器应用程序,该应用程序作为服务运行并被动侦听从另一台服务器发送的任何 SNMP 消息警报,并在收到通知时向适当的员工发送页面/电子邮件。我按照一些在线教程将应用程序设置为 Windows 服务,因为它需要持续运行并且不需要用户的输入/交互,或与任何 GUI/桌面应用程序交互。

出于某种原因,当我将应用程序安装为服务时,它会正确安装,但实际上似乎并没有工作。当 SNMP 消息发送到服务器时,没有任何反应。但是,在我的 app.publish 文件夹中有一个 SNMPTrapper.exe 应用程序,如果我自己运行该 exe,那么一切正常。目前我正在使用一种解决方法,以便服务代码的 Onstart 部分基本上只是启动 SNMPTrapper.exe 应用程序,当服务停止时,它会找到并终止 SNMPTrapper.exe 进程。但此时,服务本身似乎没有工作/做任何事情。它本质上只是一种启动 SNMPTrapper.exe 应用程序的方法。

有谁知道问题可能是什么?在我通读的一些教程中,它们概述了如何为服务设置轮询间隔,但我认为这不适用,因为该服务基本上只是不断运行以侦听新消息,它会\不需要定期检查任何东西。

现在几乎我所有的代码都在 Sub Main() 中执行,除了一些函数调用。

任何帮助将不胜感激。

    标签: vb.net visual-studio windows-services


    【解决方案1】:

    你没有说明你是如何做这些的。对于 Windows 服务,您会从系统收到两条消息:OnStart 和 OnStop。 OnStart 的工作是设置完成工作所需的所有代码,然后退出。它不参与工作,因此您需要设置一个任务或线程来执行此操作。任务或线程应该循环,直到它收到一条消息,由 OnStop 传递,我们完成了。如果您想要一个可以从命令行测试的服务,那么您的 Main 例程需要进行完全相同的设置,然后在发送 OnStop 之前等待按键被按下。 (顺便说一句,您是否记得安装后启动该服务?)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      相关资源
      最近更新 更多