代码之家  ›  专栏  ›  技术社区  ›  John Boker

ASP.NET将DLL重新安装到GAC中

  •  3
  • John Boker  · 技术社区  · 16 年前

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

    旧的dll与新的dll版本相同,只有一个较小的编辑,它将由50个不同的站点使用,因此更改版本然后更改web.config中的引用不是 好的 解决方案。

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

    有人知道我做错了什么,或者我能做些什么来补救这种情况吗?

    2 回复  |  直到 16 年前
        1
  •  3
  •   Jason Z    16 年前

    afaik,您需要重新启动IIS以获取对更新的dll的新引用。您的最佳选择是在低流量时间执行重置。如果使用负载平衡运行多个服务器,则可以在关闭所有连接之前防止新连接触及一个服务器。然后,更新DLL,重新启动IIS,并将服务器带回连接池。对每个服务器重复此操作,最终用户看不到停机时间。

        2
  •  1
  •   hova    16 年前

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

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

    因此,某种类型的脚本来完成上述操作是正确的。它所需要做的就是更新every/bin应用程序目录中的dlls上的lastmodified。