我刚刚在我的树莓派 4b 上部署了 ASP.NET Core Web 应用程序,当我通过终端手动启动它时,它工作得很好。因为我需要它在启动后立即启动,所以我想到了 Autostart -> 所以我找到了一些方法来做到这一点(我已经尝试过 lxde、crontab 和 rc.local),每次我启动树莓派时,应用程序都启动得很好但我存储在
wwwroot
文件夹中的图像丢失了,并且收到错误 404。我还尝试添加 sudo。
当我尝试通过 bash 运行应用程序(这样我可以看到日志)时,我遇到了以下消息:
用户个人资料可用。使用“/home/user/.aspnet/DataProtection-Keys”作为密钥存储库;密钥在静态时不会被加密。
我的
Program.cs
文件如下所示:
using GaragenSteuerung.Services;
var builder = WebApplication.CreateBuilder(args);
builder.Logging.ClearProviders();
builder.Logging.AddConsole();
builder.Services.AddSingleton<IRelayService, RelayService>();
builder.Services.AddRazorPages();
var app = builder.Build();
app.UseDefaultFiles();
app.UseStaticFiles();
app.MapRazorPages();
app.Run();
我尝试了这几种自启动方法以及不同的发布方法(一个文件、文件夹),当我将其存储在本地时,bootstrap也不起作用
您可以创建一个
.service
文件,其中 ExecStart 指向 dotnet 命令,然后指向您的 .dll。
[Unit]
Description=Example for .NET ConsoleApp with systemd
[Service]
ExecStart=/home/pi/.dotnet/dotnet Simple-Dotnet-Linux-Service.dll
WorkingDirectory=/home/pi/simpleDotnetService
User=pi
Group=pi
[Install]
WantedBy=multi-user.target
将
.service
文件复制到 /etc/systemd/system/ 然后运行:
sudo systemctl enable <filename>.service #enables autostart
sudo systemctl start <filename>.service #runs now
sudo systemctl status <filename>.service #checks status
然后
.dll will
现在将在系统启动时运行。享受!或者,要查看完整的示例,请继续阅读。
更多详情,可以查看这篇博客: 在树莓派上创建自动启动.NET 6服务