问题:
我正在Raspberry PI上运行.net核心应用程序。我正在从JSON文件加载配置,并将其存储在类中以供应用程序参考-在这种情况下为托管服务。如果我手动启动应用程序,然后更新配置文件,则更改将反映在应用程序中。但是,如果我将应用程序设置为在启动时自动启动,然后修改配置文件,则该应用程序不使用更新的配置。
我尝试通过rc.local中的条目启动应用程序,并使用systemd作为服务。同样,在应用程序启动并以任何一种方法运行时,它都不会获取配置更改。
系统详细信息:
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// Register Hosted Services
services.AddOptions();
services.AddSingleton<IHostedService, MonitorService>();
services.Configure<AppSettings (Configuration.GetSection("AppSettings"));
services.AddMvc();
}
服务构造器
public MonitorService(IOptionsMonitor<AppSettings> appSettings)
{
this.AppSettings = appSettings;
}
rc.local
#!/bin/sh -e
sudo /home/pi/App/MonitorApp &
exit 0
MonitorApp.service
[Unit]
Description=My Sample Service
After=multi-user.target
[Service]
Type=idle
ExecStart=/home/pi/App/MonitorApp
User=pi
[Install]
WantedBy=multi-user.target
答案 0 :(得分:0)
问题已通过以下方式解决:
我必须在服务文件中添加一个WorkingDirectory条目,例如
[Unit]
Description=My Sample Service
After=multi-user.target
[Service]
ExecStart=/home/pi/App/MonitorApp
User=pi
WorkingDirectory=/home/pi/App
[Install]
WantedBy=multi-user.target