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

旧的 DLL 与新的 DLL 版本相同,仅进行了较小的编辑,它将被 50 个不同的站点使用,因此更改版本然后更改 web.config 中的引用并不是一个问题。 好的 解决方案。

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

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

有帮助吗?

解决方案

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

其他提示

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

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

因此,执行上述操作的某种脚本是合适的。它所需要做的就是更新每个 /bin 应用程序目录中 DLL 的最后修改时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top