作为 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
我有一个 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