我正在尝试在GAC中重新安装DLL,一切似乎都运行正常,但访问它的Web应用程序似乎仍在使用旧版本。
旧的DLL与新版本的版本相同,只有一个次要编辑,它将由50个不同的站点使用,因此更改版本然后更改web.config中的引用不是 good 解决方案。
重新启动IIS服务器或工作进程不是一个选项,因为已经有50个站点在运行,必须继续这样做。
有谁知道我做错了什么或我能做些什么来弥补这种情况?
答案 0 :(得分:3)
AFAIK,您需要重新启动IIS才能获得对更新后的DLL的新参考。您最好的选择是在低流量时间执行重置。如果您正在运行具有负载平衡的多个服务器,则可以阻止新连接命中一个服务器,直到所有连接都已关闭。然后,更新DLL,重新启动IIS,并将服务器重新引入连接池。对每个服务器重复此操作,最终用户没有明显的停机时间。
答案 1 :(得分:1)
由于您没有引用应用程序池,我将假设您使用的是旧版本的IIS。在这种情况下,您需要做的是“触摸”每个引用DLL的站点中的所有DLL。
问题是代码已经加载,您需要找到一种非侵入式的方式来重新加载应用程序。回收应用程序池是一种有效的方法。如果您使用的是没有应用程序池的旧IIS,则更新/ bin / folders或web.config文件中的最后修改将重新加载应用程序,而不会影响其他站点。
所以上面的某种脚本是有序的。它需要做的就是更新每个/ bin应用程序目录中DLL的lastmodified。