【问题标题】:Replacing a DLL while AppDomain is already loaded in ASP.NET在 ASP.NET 中已加载 AppDomain 时替换 DLL
【发布时间】:2011-09-05 04:33:03
【问题描述】:

如果一个 dll 已经被 w3wp.exe 加载并且我们替换它会发生什么?

当然我们可以替换一个 dll,因为 asp.net 使用 Bin 文件夹 DLLs 的缓存版本,但我想知道在替换一个 dll 时它是否会加载新的,或者它等到下一次回收或当有没有新的请求。

编辑: DLL 包含一个单例类

【问题讨论】:

    标签: c# .net asp.net iis application-pool


    【解决方案1】:

    来自MSDN

    如果您更改 .dll 并编写一个新的 它的版本到Bin 文件夹, ASP.NET 检测更新并使用 新版本的 .dll 用于新 从那时起的页面请求。

    【讨论】:

    • 我的情况有点复杂。那是一个HttpHandler,我替换的DLL 包含一个Singleton 类。由于 App 域已经加载,我猜新的 DLL 直到下一个 recycling 才会使用。
    • @Xaqron - dll 是否包含Singleton 类无关紧要。它将回收 AppDomain 并重新加载它。
    【解决方案2】:

    修改或添加 dll 后,您的应用程序将再次编译。

    您的application's domain will be recycled 在 bin 目录发生任何更改或其内容被修改时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      相关资源
      最近更新 更多