如何动态修补正在运行的ASP.NET应用程序?

Mar*_*ell 5 asp.net patch

有没有人有一个如何修补正在运行的asp.net应用程序的示例?我想象的场景是应用程序可以查找已知的中央服务器以获取更新版本.将较新的文件下载到临时位置,然后自行修补.

我可以看到的问题是文件监视器将获取任何文件更改并重新加载应用程序域,这将停止当前的修补过程.我认为每个写入的文件都会触发应用程序的重新加载.

Dil*_*e-O 3

除非您正在对特定文件进行一些文件监视,否则您可以更新现有的 aspx 文件,而不会减慢应用程序的速度。下次用户刷新浏览器时,他们将看到页面更新。但要小心,如果您已向页面添加了其他服务器控件,并且 DLL 尚未更新,您将遇到问题。

如果您更新应用程序的 web.config 或 DLL 文件,这将触发 ASPNET 工作进程的重新加载,并且任何新用户都将遭受您通常预期的“第一次滞后”。

如果您担心这个过程,并且可以承受一些“停机时间”,我建议您创建一个执行以下操作的脚本:

  1. 将名为 App_Offline.htm 的文件上传到 Web 应用程序的根目录。IIS 将立即看到此文件并将用户重定向到它,并且不执行任何 .NET 处理。您甚至可以在根文件夹中保留一个名为 App_Offline_Disabled.htm 的文件,并在适当的时候简单地重命名它。

  2. 复制需要更新的所有文件,根据需要覆盖/重命名/复制。

  3. 删除(或重命名)App_Offline.htm 文件,以便 IIS 开始将用户定向到更新的应用程序。如果您正在观看脚本运行,您甚至可以自己访问网站来接受“首次加载”惩罚,这样您的最终用户就会像往常一样看到漂亮而清晰的内容。

再说一遍,我不知道您是否能承受这种方式的网站停机时间,但我认为该流程本身可以轻松编写脚本,以提供良好的自动化类型流程。