3

我正在尝试在 GAC 中重新安装 DLL,一切似乎都运行良好,但访问它的 Web 应用程序似乎仍在使用旧的。

旧的 DLL 与新的 DLL 版本相同,只是稍作修改,它将被 50 个不同的站点使用,因此更改版本然后更改 web.config 中的引用不是一个好的解决方案。

重新启动 IIS 服务器或工作进程不是一个选项,因为已经有 50 个站点在运行,必须继续这样做。

有谁知道我做错了什么或我能做些什么来纠正这种情况?

4

2 回答 2

3

AFAIK,您需要重新启动 IIS 才能获得对更新后的 DLL 的全新引用。您最好的选择是在低流量时间执行重置。如果您正在运行具有负载平衡的多台服务器,则可以防止新连接到达一台服务器,直到所有连接都关闭。之后,更新 DLL,重新启动 IIS,并将服务器带回连接池。对每台服务器重复此操作,最终用户没有可见的停机时间。

于 2008-08-25T19:51:47.033 回答
1

由于您没有引用应用程序池,因此我假设您使用的是旧版本的 IIS。在这种情况下,您需要做的是“触摸”每个站点中引用该 DLL 的所有 DLL。

问题是代码已经加载,您需要找到一种非侵入性的方式来重新加载应用程序。回收应用程序池是一种有效的方法。如果您在没有应用程序池的旧 IIS 上,则更新 /bin/ 文件夹或 web.config 文件中的最后修改将重新加载应用程序,而不会影响其他站点。

因此,执行上述操作的某种脚本是有序的。它需要做的就是更新每个 /bin 应用程序目录中 DLL 的 lastmodified。

于 2008-08-25T19:55:22.000 回答