我有一个用 C# 构建的应用程序,它通过 UDP 向 PLC 发送消息。根据该消息的内容,PLC 会发回一条包含必要信息的 UDP 消息。该应用程序在 VS 调试模式下运行良好。如果我使用可执行文件,该应用程序可以正常工作。该应用程序最初是在 VS 中设计为服务,并且可以在其他几个部署 Win 10、服务器等上正常运行。我不相信我们在 Win 11 IOT 上使用过它。
我在 powershell 中使用 sc.exe create “服务名称:binpath=“可执行文件的实际路径”注册了相同功能的可执行文件。然后我从服务选项卡运行它。
从 PC 进行监控时,Windows 似乎正在暂停该服务。我发现的所有内容都表明这可能与电源设置有关,因此我将电源设置更改为性能模式。当处于性能模式时,应用程序以效率模式运行。有时,它似乎不会挂起或在效率模式下运行。不管怎样它看起来都挂了。这就是我在电源设置选项卡中真正能做的一切。他们似乎删除了所有用于调整应用程序性能的有用功能。
从 PLC 端进行监控时,我的计数器会在收到 UDP 消息时递增。这些计数器不会递增。这让我相信进程正在挂起,或者 Windows 正在挂起它。
作为故障排除的一部分,防火墙暂时被完全禁用,所以我不认为它是罪魁祸首。
选中允许服务与桌面交互 - 没有变化。
发现问题实际上出在程序的不同部分。我将收到的消息存储在 SQL 数据库中。在本地运行应用程序并没有给我访问 SQL 的正确凭据。
要修复此问题,请在“服务”窗口中右键单击该服务,然后选择“属性”。登录选项卡设置为本地系统帐户。我必须选择“此帐户”并输入我的用户帐户的详细信息。
服务似乎正在运行。