ASP.NET 问题求助 许久未能解决

312 天前
 itplanes01

问题: 目前有几个程序跑在 IIS 10 上面,asp.net 4.0 应用池,在更新程序的时候,是构建之后将 bin 文件夹里的内容和其它一些必要文件用命令 xcopy 覆盖到现在正在运行的程序上,

但有时候同一个构建后的文件,发到几台 windows 上相同的应用程序,会有个别一两台出现无法查询数据库,程序无法正常执行,好像和 LINQ 有关,提示 Sequence contains no elements ,System.Data.Entity.Internal.InternalContext.Initialize

文件是和其他正常的文件夹对比过的,发布时的覆盖是没有失败的文件的

被这个问题困扰好久了,希望有大佬帮忙解惑,多谢~~

1715 次点击
所在节点    .NET
14 条回复
Eiden
312 天前
远程调试下呗
jiulang
312 天前
IEnumerable.Min() Max() First() Last() Sum()等这些操作,需要集合至少有 1 个元素。
itplanes01
312 天前
@jiulang 问题是同样的 bin 目录文件覆盖到几台相同的应用程序,有几台可以,有一台不行,用同样的这个 bin 目录文件,手动停止应用池,然后重新覆盖一遍文件,再启动应用池,就好了,什么都没有改动
jiulang
312 天前
@itplanes01 IIS 的应用回收机制具体不清楚,例如有脱缰的后台线程,也可能会影响应用的快速回收。
保险一点,还是要停止应用(对应到 w3p 进程)再更新吧。反正有多个节点。
Rocketer
312 天前
这看着就不是个静态问题,而是运行时问题。虽然你编译的文件一致,但每次运行读出来的数据不一致啊
yinmin
312 天前
你是不是从其他电脑直接 xcopy 到服务器 iis 的网站目录下的?

请尝试先 copy 到服务器的临时目录,然后在从临时目录 copy 到 iis 的网站目录,以确保网站程序的更新过程<1 秒,过长的更新时间可能会引发 iis 故障。
itplanes01
312 天前
@jiulang 停止进程太慢了,一台更新完成 4 分钟。。十几台
itplanes01
312 天前
@yinmin 目前就是把压缩包传到服务器,然后解压到临时目录再 xcopy 到原应用程序目录的
itplanes01
312 天前
@Rocketer 有这个猜测,但没头绪定位
forgottencoast
312 天前
实际上 IIS 运行 ASP.NET 时有自己的临时目录,我们之前遇到过这个目录的文件是旧版本的,手动删除这个目录然后 IIS 会自动重新生成,然后就 OK 了。
按照你#7 的说法完全可以先更新一半服务器,然后再更新另外一半服务器。
LemonNoCry
312 天前
建议在更新前
请在 IIS 目录下 放 App_offline.htm 文件

可以先
xcopy App_offline.htm
xcopy xxx
del App_offline.htm


微软文档:
https://learn.microsoft.com/zh-cn/aspnet/core/host-and-deploy/app-offline?view=aspnetcore-7.0
itplanes01
311 天前
@LemonNoCry 多谢,这个看着对 asp.net 站点有效果,我测试下看看
itplanes01
311 天前
@forgottencoast 十几台服务器是有好几个不同的环境的,一半一半全部发完最快也得 20+分钟啊
forgottencoast
311 天前
@itplanes01
没办法,大型网站更新一两天的都有。
必须设计专门的更新流程。

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

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

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

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

© 2021 V2EX