我们在.NET 4.0中有许多Web应用程序(使用Visual Studio 2010编写),这些应用程序已预编译并部署到生产服务器上。
目前,当我们进行更新时,我们会使用更新的二进制文件替换所有现有文件。这会更新应用程序,但它也会重新启动应用程序,以便所有用户都必须重新登录。
部署的二进制文件基本上由我的解决方案中的每个项目组成一个.dll。
有没有办法在不中断任何现有用户的情况下更新Web应用程序?
我意识到实现这一目标的一种方法是部署源文件并让它们在运行时由网络服务器进行编译,但这对我们来说并不是一个可行的选择。
答案 0 :(得分:6)
CLR中支持AppDomainSetup.ShadowCopyFiles属性。打开时,CLR会在加载程序集之前复制该程序集。因此只有副本被锁定,原件才能被覆盖。此功能是为ASP.NET(一种可轻松回收AppDomains的CLR主机)明确设计的。关于它的一个很好的MSDN article显示了你如何配置它。