之前网上看到,热更新 dll 到 iis 站点,不能覆盖,需要停止该站点,才能发布。 有没有人有啥解决方案。这样,我就能顺利更新到.net5 了。
1
kiracyan 2020-11-25 10:13:07 +08:00
好像不太行 .net core 我记得 IIS 只是个代理
|
2
crclz 2020-11-25 10:20:40 +08:00
你新建一个 demo 试试呗
|
3
Oo0 2020-11-25 10:34:50 +08:00
用 vs 的发布,它会提示 dll 被占用,但可以成功
|
4
leeg810312 2020-11-25 10:36:10 +08:00 via Android
服务端能热更新?来了解一下哪家做到了
|
5
kiracyan 2020-11-25 10:36:27 +08:00
不对 我试了下用 VS 发布 不勾删除现有文件就没问题啊
|
9
penll OP @leeg810312 可以呀。我这边都是直接更新 dll
|
12
chouchoui 2020-11-25 11:03:21 +08:00 1
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 |
13
opengps 2020-11-25 11:16:43 +08:00
看你把热更新理解到什么程度:
在开发角度,往往是实现替换 dll 文件的程度才算热更新 在运维角度,可以通过集群后端切换不同站点的方式来尽可能无感知更换后台站点服务器,来实现“热升级”,如果有耐心,甚至可以做到无感知(被停机那台机器移出负载均衡后,多等一会直到剩余连接断开再更换文件,把已有的连接用完) |
14
CrazyMonkeyV 2020-11-25 11:26:19 +08:00
热更新,需要你做动态加载 dll,以及相关逻辑
|
15
sks4728 2020-11-25 11:46:07 +08:00
动态加载 卸载 程序集 3.1 还是 3.0 开始支持吧
|
16
vone 2020-11-25 11:48:08 +08:00 2
我们 .NET Core 的系统是使用 7z 把 Release 目录打个 zip 包,复制 zip 包和部署脚本到服务器。
部署脚本命令: 1 、写入 app_offline.htm 2 、调用 7z 释放 zip 包内容 3 、删除 app_offline.htm 步骤 1-3 期间如果访问网站会看到 app_offline.htm 文件的内容,不过这个脚本因为只是释放文件所以执行的非常快,一共就停机几秒。 |
17
IDAEngine 2020-11-25 12:34:32 +08:00 via iPhone
开负载均衡呗,搭建个新环境,然后把旧的迁移过来,平滑过渡
|
18
h82258652 2020-11-25 12:44:16 +08:00
我这边方案也是类似 16 楼的方案。StopSite 然后迁移数据库,接着 WebDeploy,部署完后就 StartSite,整套下来 10 秒不到。要完全无感知,上负载均衡吧。
|
23
exonuclease 2020-11-25 16:08:24 +08:00
巨硬自家的表示没玩过这种骚操作 我们是两套完整的环境然后切流量的
|
25
beginor 2020-11-25 19:15:48 +08:00 via Android
难道不是应该半夜更新么?
|
26
penll OP |
28
ragnaroks 2020-11-26 08:28:52 +08:00 2
iis 还真不清楚,我用 dotnet core 是写了个 loader,以 AppDomain 的形式加载 asp.net core 的 dll,可以做到不重启进程平滑过渡;前面用 nginx 套一层当 httpd 用;
具体技术细节可以搜 dotnet single process mutli appdomain |
29
forgottencoast 2020-11-27 11:19:25 +08:00
@leeg810312 你这个问题是什么意思?那些脚本语言做的服务端,哪个不是改了立即生效的?
|