ASP.NET Core部署Ubuntu时找不到appsettings.Production.json问题
解决Ubuntu部署ASP.NET Core找不到appsettings.Production.json的问题
问题根源
服务启动时默认工作目录是根目录/,而你的配置文件实际在/home/ubuntu/Release/net8.0/下,代码里用相对路径加载文件,导致程序去根目录查找,自然找不到目标文件。
解决方案
方案1:修改systemd服务文件,指定工作目录
在服务文件的[Service]段添加WorkingDirectory配置,让程序在发布文件所在目录运行:
[Unit] Description=ASP.NET Core Website After=network.target [Service] ExecStart=/usr/bin/dotnet /home/ubuntu/Release/net8.0/API.dll WorkingDirectory=/home/ubuntu/Release/net8.0/ # 新增工作目录配置 Restart=on-failure # 修正原配置的语法错误,原Restart-on=failure写法无效 User=ubuntu Type=simple Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.target
修改后重新加载服务配置并重启:
sudo systemctl daemon-reload sudo systemctl restart your-service-name
方案2:修改代码,基于程序集目录加载配置文件
在Program.cs里改用程序集所在目录拼接配置文件路径,确保无论工作目录是什么,都能定位到正确文件:
using System.IO; // ... builder.Configuration.AddJsonFile(Path.Combine(AppContext.BaseDirectory, "appsettings.Production.json"), false);
修改后重新发布部署即可。
方案3:检查并修正文件权限
确认ubuntu用户对配置文件有读取权限,执行命令查看:
ls -l /home/ubuntu/Release/net8.0/appsettings.Production.json
如果权限不足,执行以下命令赋予读取权限:
sudo chmod o+r /home/ubuntu/Release/net8.0/appsettings.Production.json
内容的提问来源于stack exchange,提问作者iKingNinja
相关产品推荐
相关产品推荐

