当前位置:首页 > 技术实录

更新发布Linux平台上.NET Web项目注意事项

心智碎片2026-03-21 10:39技术实录1330

今天更新某项目的后台web时出现了一个问题,新代码发布后服务器依然运行的是旧代码,多次发布无效,重启Nginx也无效,经查阅相关资料,恍然大悟,原来是把 .NET服务这茬给忘了,应该就相当于windows的程序池。

更新发布Linux平台上.NET Web项目,要重启 .NET 应用服务,不然始终运行的是内存中的旧代码。

如果使用面板,安装了Supervisor来管理.NET,可通过Supervisor重启对应 .NET 应用。

downloaded-image.jpg

以下是AI回答,可供参考:


核心原因

  1. 职责分离

    • .NET 应用 (如 ASP.NET Core) 运行在独立的进程中(通常是 dotnet YourApp.dll 或由 Kestrel/Web 服务器托管)。

    • Nginx 在这里通常充当反向代理 (Reverse Proxy)。它的作用仅仅是接收外部请求,并将其转发给后端正在运行的 .NET 进程。

  2. 配置未变

    • 发布操作通常只是替换了 .NET 应用的二进制文件 (dll)、静态资源 (wwwroot) 和配置文件 (appsettings.json)。

    • 只要你的发布操作没有修改 Nginx 的配置文件 (通常位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/your-app.conf),Nginx 就完全感知不到后端代码的变化,因此不需要重启或重载。

正确的操作流程

发布 .NET 应用后的标准步骤是重启 .NET 应用服务,而不是 Nginx。

1. 如果你使用 systemd 托管 (Linux 最常见)

你需要重启承载 .NET 应用的 service。

# 假设你的服务名称是 myapp.service
sudo systemctl restart myapp.service

# 查看状态确保启动成功
sudo systemctl status myapp.service

此时,Nginx 会继续运行。当 .NET 应用重启完成并重新监听端口后,Nginx 转发的新请求会自动由新版本的应用处理。

2. 如果你使用 IIS (Windows)

在 Windows 上通常不使用 Nginx,而是用 IIS。如果是这种情况,发布后通常需要:

  • 应用程序池回收:IIS 通常在检测到 web.config 变化时自动回收应用程序池。

  • 或者手动重启站点。

3. 如果你使用 Docker

如果你是将 .NET 应用打包在 Docker 容器中,而 Nginx 运行在宿主机或另一个容器中:

# 重建并重启 .NET 应用容器
docker-compose up -d --build your-dotnet-service
# 或者
docker restart <container-id>

Nginx 容器不需要动,因为它只是通过内部网络名称访问 .NET 容器。


什么情况下需要重启/重载 Nginx?

只有在以下少数情况才需要操作 Nginx:

  1. 修改了 Nginx 配置:你更改了反向代理规则、SSL 证书路径、缓存策略或端口映射。

    • 命令:sudo nginx -t (测试配置) -> sudo systemctl reload nginx (平滑重载,不中断连接)。

  2. 更新了 Nginx 本身:升级了 Nginx 软件版本。

  3. 静态文件缓存问题

    • 如果你发布了新的静态文件 (JS/CSS/图片),但浏览器仍然显示旧版本,这通常是浏览器缓存Nginx 静态文件缓存的问题,而不是需要重启 Nginx。

    • 解决方法:在文件名中加入版本号哈希 (如 app.v1.2.js),或在 Nginx 配置中调整 expires 指令,然后执行 reload (非 restart) 清除 Nginx 自身的缓存(如果配置了的话)。

总结

  • 发布 .NET 代码 -> 重启 .NET 服务 (systemctl restart myapp)。

  • Nginx -> 保持运行,无需操作

注意:在重启 .NET 服务的几秒钟内,用户可能会遇到短暂的 502 Bad Gateway 错误,因为 Nginx 还在尝试连接正在重启的后端端口。这是正常现象,服务启动完成后会自动恢复。

扫描二维码推送至手机访问。

版权声明:本文由心智碎片发布,如需转载请注明出处。

本文链接:https://diary.mindb.vip/technology/267.html

分享给朋友:

“更新发布Linux平台上.NET Web项目注意事项” 的相关文章

序言

从今天起,将正式开始学习WG方面知识。…

Visual C++ 2008 Express Edition下载(微软学生中心官网)

为了防止盗链检测,所以没加跳转,请直接将下列地址复制到“迅雷-新建”。…

外挂学习告示

呃。。年终于基本过完了。…

VS2010旗舰中文版

VS2010旗舰中文版:…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。