You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pm2重载后Asp.Net Core项目启动失败,版本字符串无效

问题解决:PM2 Reload ASP.NET Core 进程时 NuGet 版本错误及替代方案

一、PM2 Reload 报错的原因及修复

你遇到的'N/A' is not a valid version string错误,核心原因是**dotnet watch run是开发环境的热重载工具,和PM2的Reload机制不兼容**:

  • dotnet watch本身会监听文件变更并自动重启进程,属于开发场景工具,不适合生产环境部署。
  • PM2的reload是平滑重载(发送信号让进程优雅重启),但dotnet watch无法正确处理这个信号,导致进程重启时NuGet读取版本信息异常,抛出无效版本字符串错误。

修复方案:改用生产环境发布包启动

  1. 发布ASP.NET Core项目:

    dotnet publish -c Release -o ./publish
    

    该命令会在项目目录下生成publish文件夹,包含编译后的生产环境运行文件。

  2. 用PM2启动发布后的DLL:

    pm2 start --name "dotnet-api" "dotnet ./publish/Factor Earth Forms 2 dotnet api.dll"
    

    此时执行pm2 reload dotnet-api即可正常平滑重载,不会触发NuGet版本错误。

临时替代(开发环境):用PM2 Restart代替Reload

如果必须在开发环境使用dotnet watch run,不要用pm2 reload,改用pm2 restart <进程ID/名称>,该命令会完全重启进程,和重新执行pm2 start效果一致,避免重载冲突。

二、替代PM2的进程管理工具推荐

如果不想继续使用PM2,以下两种工具更适合生产环境部署ASP.NET Core服务:

1. Systemd(Ubuntu自带,推荐)

Ubuntu默认自带的服务管理工具,支持开机自启、崩溃自动重启,配置简单:

  • 创建服务配置文件:
    sudo nano /etc/systemd/system/dotnet-api.service
    
  • 写入以下配置(根据实际路径修改):
    [Unit]
    Description=Factor Earth Forms API
    After=network.target
    
    [Service]
    User=ubuntu
    WorkingDirectory=/home/ubuntu/record-dotnet/publish
    ExecStart=/usr/bin/dotnet /home/ubuntu/record-dotnet/publish/Factor Earth Forms 2 dotnet api.dll
    Restart=always
    RestartSec=10
    Environment=ASPNETCORE_ENVIRONMENT=Production
    
    [Install]
    WantedBy=multi-user.target
    
  • 启用并启动服务:
    sudo systemctl enable dotnet-api.service
    sudo systemctl start dotnet-api.service
    
  • 常用命令:
    # 查看状态
    sudo systemctl status dotnet-api.service
    # 重启服务
    sudo systemctl restart dotnet-api.service
    # 查看日志
    journalctl -u dotnet-api.service -f
    

2. Supervisor

轻量级进程管理工具,配置直观,适合快速部署:

  • 安装Supervisor:
    sudo apt update && sudo apt install supervisor
    
  • 创建配置文件:
    sudo nano /etc/supervisor/conf.d/dotnet-api.conf
    
  • 写入以下配置:
    [program:dotnet-api]
    command=dotnet /home/ubuntu/record-dotnet/publish/Factor Earth Forms 2 dotnet api.dll
    directory=/home/ubuntu/record-dotnet/publish
    user=ubuntu
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/dotnet-api.err.log
    stdout_logfile=/var/log/dotnet-api.out.log
    
  • 加载配置并启动服务:
    sudo supervisorctl reread
    sudo supervisorctl update
    sudo supervisorctl start dotnet-api
    
  • 常用命令:
    # 查看状态
    sudo supervisorctl status dotnet-api
    # 重启服务
    sudo supervisorctl restart dotnet-api
    # 查看日志
    tail -f /var/log/dotnet-api.out.log
    

内容的提问来源于stack exchange,提问作者Eric Webb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:34:59