作为 SystemD 服务的 Dotnet 应用程序:System.ArgumentNullException:值不能为空。 (参数'connectionString')

Dotnet app as SystemD Service: System.ArgumentNullException: Value cannot be null. (Parameter 'connectionString')

我有一个 C# DotNet 5 worker,它连接到数据库并执行各种操作。

如果我在 AlmaLinux x64 环境中部署应用程序并将其作为普通应用程序执行,它可以正常工作。

当我尝试作为 Systemd 服务执行时出现以下错误

unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'connectionString')

这是我的appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Warning"
    }
  },
  "ConnectionStrings": {
    "connectionString": "Server=192.168.0.191;Database=new_centrex_db;Password=[REDACTED];UID=[REDACTED]"
  },
  "apiconfig": {
    "apiUrl": "https://example.org/theApi",
    "authHeaderName": "X-authenticate"
  }
}

这是单元文件:

[Unit]
Description=Test

[Service]
Type=simple
ExecStart=/home/utente/publish/CentrexNotificatorD
User=utente
Group=utente

[Install]
WantedBy=multi-user.target

我试过使用和不使用用户和组以及使用简单和通知的类型,但没有成功。 所有文件的权限为 ugo+rw,可执行文件的权限为 ugo+rx

当然我在程序中使用.UseSystemd()

我做错了什么?

发现问题:我不得不在 .service 文件中放置一个 WorkingDirectory 指向服务所在的目录。在这种情况下 /home/utente/publish