我才能够阅读了该ASP.NET检测更改像ASPX文件,DLL和其他特定文件。这将重新启动本身,完成当前运行的请求和新要求与新部署的文件。

但是,在从第一个文件时发生beeing复制,直到最后一个已被更换?假如我交换第1个DLL文件,然后请求到来,但其他DLL文件是在旧版本 - 将它刚刚崩溃?将asp.net等待几秒钟,只有没有(有关)X秒后开始自己新的文件变化?

THX!

有帮助吗?

解决方案

您有4个问题在这里: 什么是从第一个文件的时候发生的beeing复制,直到最后一个被交换 - 有一组时间,而.NET等待着看它在启动前是否有任何其他文件已被修改新的应用程序域与新的DLL的加载。

如果我交换第1个DLL文件,然后请求到来,但其他DLL文件是在旧版本 - 将它只是崩溃 - ?这取决于改变是在DLL中的什么码。如果新的DLL可以运行良好的旧代码,那么这将是罚款。但是,如果应用程序域旋转起来的新DLL和新的DLL依赖的东西,现在还没有......那么是的,它会抛出异常。

将ASP.NET等待几秒钟,只自行启动新的没有(相关)文件的更改 X秒后 - ?是的。我还没有能够找到的时间有多长。但在我个人的经验这是什么地方在1-2秒范围内。

我还发现在应用程序域和DLL的重新加载这里一个很好的解释: http://odetocode.com/Articles/305.aspx

  

如果你拷贝一个更新的DLL到   应用程序的bin子目录中,   ASP.NET运行时承认有   新代码来执行。由于ASP.NET   不能交换的dll到现有的   AppDomain中,它启动一个新的AppDomain。   旧的应用领域是“漏   停止”,也就是说,现有的请求   被允许执行完毕,并   一旦他们都完成了   AppDomain中可以卸载。新的   AppDomain中使用新代码和启动   开始服用所有新请求。

     

通常,当一个DLL加载到   过程中,进程锁定DLL和   你不能覆盖磁盘上的文件。   然而,应用程序域有一个特点   被称为影复制,使   组件保持解锁,并且   可更换的磁盘上。

     

在运行时初始化ASP.NET与   启用卷影复制的bin   目录。在AppDomain将复制任何   dll会从bin目录需要   锁定前一个临时位置   和加载的dll到内存中。   卷影复制使我们能够覆盖任何   期间中的DLL的bin目录   更新不考虑网络   应用程序脱机。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top