没有太多进入ASP.NET世界,我仍然需要处理ASP.NET项目,需要定期将新版本部署到生产IIS服务器。
ASP.NET应用程序部署的普遍接受的最佳做法是什么?
环境:Windows Server 2003,IIS6,MySQL5,ASP.NET 2.0应用程序。
答案 0 :(得分:13)
如果在线用户很少,例如在晚上或周末,请尝试执行生产部署。通知用户计划中断。
部署到生产环境时,您可以创建“App_Offline.htm”文件并将其放在ASP.NET网站的根目录中。 ASP.NET识别此文件具有特殊含义 - 所有动态页面请求都显示在此页面而不是用户请求的页面。通常,此页面会显示一条友好的消息,例如“服务器已停机以进行日常维护。请在30分钟后重试。”
让部署减少痛苦的另一个方法是让您的web.config在各种环境(如开发,测试和生产)之间保持尽可能相似。对于在不同环境中真正需要更改的内容,例如连接字符串,您可以通过在web.config中设置将它们提取到自己的connectionStrings.config文件中。
对于数据库部署,有一些很棒的第三方工具(例如SQL Server的Teratrax Database Compare),它们允许您比较两个数据库之间的模式和/或数据,并生成将迁移目标的SQL脚本数据库到其他数据库的模式。这是否适合您将取决于您的确切开发实践。如果您不能使用此类工具,则可以编写每个数据库更改的脚本,然后在部署到其他环境时重播这些脚本。
当然,理想情况下,您应该拥有一个与Production完全相同的测试环境,并且能够进行所有验收测试并确保您的发布稳定,并且在您完成实际工作之前部署将会正常工作。
答案 1 :(得分:2)
Make sure <compiliation debug="false">
is set in your web.config
预编译(使用网站应用程序或web deployment projects)以避免第一次访问网站时的初始减速。
答案 2 :(得分:2)
前段时间我写了一篇针对这种方法的博客文章,它有不同的环境: http://juristr.com/blog/2009/03/best-practices-deploying-webapps-contd_20/
我还要考虑的是增加AssemblyInfo中的版本号,以便跟踪生产系统上使用的实际版本。