数字海洋发布后的数据库错误

niknxzdl  于 2022-10-06  发布在  Nginx
关注(0)|答案(2)|浏览(193)

我正在尝试用Nginx在数字海洋Ubuntu 22.04中托管一个ASP.NET Core Web API。它使用SQLite。当我运行dotnet build | dotnet run命令时,一切正常,Swagger打开,并且从数据库检索数据。

然而,在我使用dotnet publish发布,在/etc/systemd/system中创建一个服务并使用sudo systemctl start myapi.service运行它之后,Swagger成功打开,但任何HTTP请求都会导致“Error 500:Internal Service Error”。

服务文件:

[Unit]
Description=My API

[Service]
WorkingDirectory=/home/myAPI/bin/Debug/net6.0/publish
ExecStart=/usr/bin/dotnet /home/myAPI/bin/Debug/net6.0/publish/myAPI.dll
Restart=always

# Restart service after 10 seconds if the dotnet service crashes:

RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target
pgpifvop

pgpifvop1#

您有一个内部服务器错误,这不是来自服务器配置的错误。该应用程序返回500。在终端中,您可以写道:

journalctl -u [YourServiceName].service --since '2021-MM-DD hh:mm:ss'

以获取您的应用程序的最新错误。修复它,重新部署。

您还可以通过启用日志记录来查看后台正在发生的情况。以下是两份参考文件:

How can I log messages from an ASP.NET Core application to a specific file on Linux?

Logging in .NET Core and ASP.NET Core

希望这能对你有所帮助。

lztngnrs

lztngnrs2#

运行该命令

journalctl -u [YourServiceName].service --since '2021-MM-DD hh:mm:ss'

帮助发现实际错误是“SQLite尝试写入只读数据库”。解决方案是在服务文件中将User=www-data更改为User=root

相关问题