gpt4 book ai didi

asp.net - 如果我覆盖 DLL,我的 ASP.NET 应用程序是否会停止执行?

转载 作者:行者123 更新时间:2023-12-02 13:24:03 27 4
gpt4 key购买 nike

假设我的 ASP.NET 应用程序正在进行 4 个单独的数据库调用。如果在第二次调用之后,我覆盖了 BIN 文件夹中的 DLL,是否会阻止应用程序继续处理,从而导致第三次和第四次数据库调用失败?

如有任何建议,我们将不胜感激,莫什

最佳答案

ASP.NET 对各种资源(包括 DLL 和 ResX 文件)执行称为“影子复制”的操作。当框架访问文件时,它会被锁定以防止直接访问。为了防止锁定 root/bin 或 root/App*_Resources 中的文件(例如),它将这些资源复制到预定目录。

[编辑]
预定目录默认为类似

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\demo1\9b9144a7\8665ac07

其中 demo1 是您的应用程序和嵌套目录的名称(我假设)根据所包含资源的 AppDomain 的友好名称进行哈希处理。

例如,我有一个名为 dbresourceproviderweb 的目录,该目录来自 Michelle Bustamante 编写的 MSDN 上的资源提供程序示例。在该目录中,有两个文件夹:c8b872e2 和 7fc33f08。更进一步,厄瓜多尔西类牙语的编译资源位于 ...\dbresourceproviderweb\c8b872e2\97074f76\es-EC...\dbresourceproviderweb\7fc33f08\ac65ebd3\es-EC
[/编辑]

您可以在 Application_Start 中更改此目录,如下所述:AssemblyResolve event is not firing during compilation of a dynamic assembly for an aspx page

您可以在 web.config 中关闭卷影复制:

<hostingEnvironment shadowCopyBinAssemblies="false" />

当这些卷影复制文件之一在您的应用程序中更新时,会生成一个新的 AppDomain,并且允许当前 AppDomain 中的请求完成,而所有新请求都将定向到新的 AppDomain。

有关卷影复制和 AppDomains 的更多信息,请查看 MSDN 的文章:http://msdn.microsoft.com/en-us/library/ms404279.aspx

编辑2:我刚刚了解到您可以修改文件复制操作之间所需的时间长度以生成 AppDomain。

在 system.web/httpRuntime 元素中,您可以指定 waitChangeNotificationma​​xWaitChangeNotification,这样就不会为每个复制的文件生成一个新的 AppDomain。请参阅MSDN .

虽然 MSDN 上没有这种行为的真正示例,但最好保留作为 HttpRuntime 可配置性的引用。

关于asp.net - 如果我覆盖 DLL,我的 ASP.NET 应用程序是否会停止执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4394410/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com