ASP.NET Core Web 应用程序在 Raspberry 上自动启动时不使用存储在 wwwroot 中的静态文件

问题描述 投票:0回答:1

我刚刚在我的树莓派 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也不起作用

html asp.net-core raspberry-pi autostart
1个回答
0
投票

您可以创建一个

.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服务

© www.soinside.com 2019 - 2024. All rights reserved.