.NET 5 WebAPI部署Ubuntu服务器遇(code=exited, status=203/EXEC)错误求助
解决方案汇总
方案1:升级项目到.NET 6(推荐长期方案)
.NET 5已停止官方支持,Ubuntu 23.04不再提供该版本的安装源,升级到LTS版本的.NET 6是最稳定的选择:
- 本地安装.NET 6 SDK,打开项目修改
.csproj文件:将<TargetFramework>net5.0</TargetFramework>替换为<TargetFramework>net6.0</TargetFramework> - 更新NuGet依赖:将所有
Microsoft.AspNetCore.*包升级到6.x版本,Swagger相关包(Swashbuckle.AspNetCore)同步更新至兼容.NET 6的版本 - 重新发布项目:执行
dotnet publish -c Release,将发布后的文件覆盖服务器/var/www/MinAPI目录下的旧文件 - 验证服务器运行时:执行
dotnet --list-runtimes确认已安装ASP.NET Core 6.0运行时 - 重启服务:
systemctl restart MinAPIservice.service,再用systemctl status MinAPIservice.service检查运行状态
方案2:兼容模式运行(临时快速方案)
若暂时不想升级项目代码,可利用.NET的向前兼容特性,让.NET 6运行时承载.NET 5项目:
- 本地修改项目
.csproj,在<PropertyGroup>节点中添加配置:
<RollForward>Major</RollForward>
- 重新发布并上传项目文件到服务器
- 确保服务器已安装ASP.NET Core 6.0运行时,直接执行
dotnet /var/www/MinAPI/MinWebApi.dll测试运行,正常后重启systemd服务
方案3:修复systemd服务的基础错误
从状态日志的status=203/EXEC来看,存在路径或权限问题:
- 修正文件路径:systemd配置中
ExecStart指向的是MinWebApi.dll,但你测试时运行的是WebApi.dll,文件名不匹配,修改/etc/systemd/system/MinAPIservice.service中的路径为正确的文件名 - 修复权限:执行
chown -R www-data:www-data /var/www/MinAPI和chmod -R 755 /var/www/MinAPI,确保服务运行用户有权限访问项目文件 - 重载systemd配置:
systemctl daemon-reload后重启服务
503错误排查
服务启动正常后仍出现503时,需检查:
- 反向代理配置:若用Nginx等代理,确保代理端口与WebAPI监听端口(默认5000/5001,或项目配置端口)一致
- 查看服务日志:执行
journalctl -u MinAPIservice.service -f实时查看日志,排查端口绑定失败、Swagger初始化错误等问题 - 防火墙配置:执行
ufw allow 5000/tcp(若直接访问API端口)或开放80/443端口(若通过代理访问)
内容的提问来源于stack exchange,提问作者Bashar Al-shaibani
相关产品推荐
相关产品推荐

