假设我的ASP.NET应用程序正在进行4次单独的数据库调用.如果在第二次调用之后,我覆盖了BIN文件夹中的DLL,是否会阻止应用程序继续处理,从而导致第3次和第4次数据库调用失败?
莫什,非常感谢任何建议
Jim*_*ert 45
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的目录,来自MSDN上的资源提供者示例,由Michelle Bustamante编写.在该目录中,有两个文件夹:c8b872e2和7fc33f08.为了更进一步,厄瓜多尔西班牙语的编译资源在...\dbresourceproviderweb\c8b872e2\97074f76\es-EC 和...\dbresourceproviderweb\7fc33f08\ac65ebd3\es-EC
[/ Edit]
您可以在Application_Start中更改此目录,如下所述:在编译aspx页面的动态程序集期间,不会触发AssemblyResolve事件
您可以在web.config中关闭卷影复制:
<hostingEnvironment shadowCopyBinAssemblies="false" />
当在您的应用程序中更新其中一个影子复制文件时,会生成一个新的AppDomain,并允许当前AppDomain中的请求完成,而所有新请求都指向新的AppDomain.
有关Shadow Copying和AppDomains的更多信息,请查看MSDN的文章:http://msdn.microsoft.com/en-us/library/ms404279.aspx
Edit2:我刚刚了解到你可以修改文件复制操作之间所需的时间长度来生成AppDomain.
在system.web/httpRuntime元素中,您可以指定waitChangeNotification和maxWaitChangeNotification,以便不会为复制的每个文件生成新的AppDomain.请参阅MSDN.
虽然在MSDN上没有这种行为的实例,但最好保留HttpRuntime可配置性的参考.
归档时间: |
|
查看次数: |
1496 次 |
最近记录: |