有没有大佬,知道.net core 或.net5 如何在 iis 上热更新、热发布

2020-11-25 09:34:39 +08:00
 penll

之前网上看到,热更新 dll 到 iis 站点,不能覆盖,需要停止该站点,才能发布。 有没有人有啥解决方案。这样,我就能顺利更新到.net5 了。

6098 次点击
所在节点    .NET
29 条回复
kiracyan
2020-11-25 10:13:07 +08:00
好像不太行 .net core 我记得 IIS 只是个代理
crclz
2020-11-25 10:20:40 +08:00
你新建一个 demo 试试呗
Oo0
2020-11-25 10:34:50 +08:00
用 vs 的发布,它会提示 dll 被占用,但可以成功
leeg810312
2020-11-25 10:36:10 +08:00
服务端能热更新?来了解一下哪家做到了
kiracyan
2020-11-25 10:36:27 +08:00
不对 我试了下用 VS 发布 不勾删除现有文件就没问题啊
sun1991
2020-11-25 10:40:16 +08:00
@kiracyan 还是会重启服务进程的吧, 只是你不知道而已
kiracyan
2020-11-25 10:44:49 +08:00
@sun1991 更新还有不重启进程的吗
sun1991
2020-11-25 10:55:07 +08:00
@kiracyan 可能是我理解有误. 到底热更新, 热发布是什么意思?
penll
2020-11-25 11:00:22 +08:00
@leeg810312 可以呀。我这边都是直接更新 dll
penll
2020-11-25 11:01:39 +08:00
@Oo0 是吗?那我试试哈
penll
2020-11-25 11:02:22 +08:00
@Oo0 vs 的发布,是直接发到服务器上吗?还是本地调试?
chouchoui
2020-11-25 11:03:21 +08:00
https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/app-offline?view=aspnetcore-5.0

不知道这个在.NET 5 还能用不

现在手头上有个项目.NET Core 2.2 的还是有效,每次更新的时候会自动带一个 app_offline.htm 提交到站点目录下,更新完以后删除 app_offline.htm
opengps
2020-11-25 11:16:43 +08:00
看你把热更新理解到什么程度:
在开发角度,往往是实现替换 dll 文件的程度才算热更新
在运维角度,可以通过集群后端切换不同站点的方式来尽可能无感知更换后台站点服务器,来实现“热升级”,如果有耐心,甚至可以做到无感知(被停机那台机器移出负载均衡后,多等一会直到剩余连接断开再更换文件,把已有的连接用完)
CrazyMonkeyV
2020-11-25 11:26:19 +08:00
热更新,需要你做动态加载 dll,以及相关逻辑
sks4728
2020-11-25 11:46:07 +08:00
动态加载 卸载 程序集 3.1 还是 3.0 开始支持吧
vone
2020-11-25 11:48:08 +08:00
我们 .NET Core 的系统是使用 7z 把 Release 目录打个 zip 包,复制 zip 包和部署脚本到服务器。
部署脚本命令:
1 、写入 app_offline.htm
2 、调用 7z 释放 zip 包内容
3 、删除 app_offline.htm

步骤 1-3 期间如果访问网站会看到 app_offline.htm 文件的内容,不过这个脚本因为只是释放文件所以执行的非常快,一共就停机几秒。
IDAEngine
2020-11-25 12:34:32 +08:00
开负载均衡呗,搭建个新环境,然后把旧的迁移过来,平滑过渡
h82258652
2020-11-25 12:44:16 +08:00
我这边方案也是类似 16 楼的方案。StopSite 然后迁移数据库,接着 WebDeploy,部署完后就 StartSite,整套下来 10 秒不到。要完全无感知,上负载均衡吧。
penll
2020-11-25 14:19:53 +08:00
@chouchoui 谢谢大佬,我试试看这个 app_offline.htm 哈
penll
2020-11-25 14:21:16 +08:00
@vone 谢谢指点哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/728953

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX