【问题标题】:What is the best way to update an ASP.NET web application DLL?更新 ASP.NET Web 应用程序 DLL 的最佳方法是什么?
【发布时间】:2010-02-22 21:24:22
【问题描述】:

我有一个 ASP.NET Web 应用程序,它在 /bin 文件夹“Example.dll”中包含一个 DLL。如果我在 Web.config 中没有提及“Example.dll”,那么简单地将其替换为较新版本的“Example.dll”是否安全,并且应用程序将使用它?

如果没有,需要哪些步骤?

【问题讨论】:

    标签: asp.net dll


    【解决方案1】:

    是的,这很安全(假设您一直很小心并且没有进行任何重大更改),但这是我从痛苦经历中学到的一个技巧:不要在同一文件夹中备份旧版本。即使您将其重命名为 Example.dll0 之类的名称,它仍然可能会混淆框架。

    此外,这样做会重新启动应用程序。

    【讨论】:

    • 根据我的经验,这很容易导致FileLoadException 出现消息“无法加载文件或程序集或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 "事实上,前几天我在尝试替换 DLL 时遇到了这种情况,最终不得不重新部署整个应用程序。我认为这取决于您的部署策略。例如,本例中的应用程序是预编译的。
    • Josh,我从来没有遇到过这种情况,而且我所有的应用程序都是预编译的。但是,我猜如果它处于进程中间并且它(无论出于何种原因)想要在回收应用程序之前完成,它可能会发生。重新启动应用程序后,我看不出它为什么要寻找旧的 DLL。
    • 我放入了新的 DLL(没有任何会导致编译错误的更改),我的应用程序完全停止工作,事件查看器有几条这样的消息(每个后续请求一条)。重新部署整个应用程序解决了这个问题。星期五刚发生在我身上。
    • 您可以通过清理 ASP.net 缓存(位于 C:\windows\Microsoft.net\Framework(64)\v4.0.30319\Temporary ASP.net Files 下)并重新启动应用程序来解决此问题游泳池
    【解决方案2】:

    替换 DLL 将触发 App Domain(整个 Web 应用程序)重新启动,任何使用此 DLL 的代码将在重新启动时使用新版本。当前对旧请求的请求将完成,然后关闭。

    因此不需要额外的步骤,只需注意应用程序将重新启动。

    【讨论】:

      猜你喜欢
      • 2010-09-10
      • 2010-09-12
      • 1970-01-01
      • 2011-01-21
      • 2011-07-03
      • 1970-01-01
      • 2010-09-13
      • 2018-07-07
      相关资源
      最近更新 更多