如何将ASP.NET应用程序部署到活动服务器?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (113)

我正在寻找用于将ASP.NET Web应用程序项目(不是 ASP.NET网站)部署到生产环境的不同技术/工具?

我对持续集成构建服务器在某个位置丢弃二进制文件和第一个用户请求到达这些二进制文件的时间之间发生的工作流程特别感兴趣。

  1. 是使用某些特定的工具还是仅使用XCOPY?应用程序如何打包(ZIP,MSI,...)?
  2. 首次部署应用程序时,如何设置应用程序池和虚拟目录(是手动创建还是使用某种工具创建它们)?
  3. 当静态资源更改(CSS,JS或图像文件)时,是重新部署整个应用程序还是仅重新部署修改后的资源?当程序集/ ASPX页面更改时如何?
  4. 是否跟踪给定应用程序的所有已部署版本,以及万一出现问题,是否具有将应用程序还原到先前已知的工作状态的过程?

随意完成以前的列表。

以下是我们用来部署ASP.NET应用程序的方法:

  1. 我们将Web部署项目添加到解决方案中,并将其设置为构建ASP.NET Web应用程序
  2. 我们将一个安装项目(不是 Web安装项目)添加到解决方案,并将其设置为Web部署项目的输出
  3. 我们添加一个自定义安装操作,并在OnInstall事件中运行自定义构建.NET程序集,该程序集使用System.DirectoryServices.DirectoryEntry在IIS中创建应用程序池和虚拟目录(此任务仅在部署应用程序时首次执行) 。我们支持IIS中的多个网站,虚拟目录的身份验证以及设置App Pools的身份。
  4. 我们在TFS中添加一个自定义任务来构建安装项目(TFS不支持安装项目,因此我们必须使用devenv.exe来构建MSI)
  5. MSI安装在实时服务器上(如果有先前版本的MSI,它首先被卸载)
提问于
用户回答回答于

我们使用Setup Factory将所有代码部署在MSI中。如果有什么需要改变,我们重新部署整个解决方案。这听起来像是一个css文件的矫枉过正,但它绝对保持所有环境同步,并且我们确切地知道生产中的是什么(我们以相同的方式部署到所有测试和uat环境)。

用户回答回答于

我们将部署部署到实时服务器,所以我们不使用安装程序项目; 我们有更像CI的东西:

  • “活的”构建服务器从批准的源(而不是回购的“头”)构建,
  • (在进行了备份之后; -p)
  • robocopy发布到登台服务器(“live”,但不在F5集群中)
  • 在临时服务器上进行最后的验证,通常用“主机”黑客尽可能模仿整个事情
  • robocopy / L会自动用于分发下一个“推送”中的更改列表,以提醒任何混乱
  • 作为计划进程的一部分,集群将循环运行,通过robocopy部署到集群中的节点(但它们不在集群中)

robocopy会自动确保只部署更改。

重新应用程序池等; 我喜欢这个实现自动化,但在那一刻它是手动的。不过,我真的想改变这一点。

(这可能有助于我们在现场拥有自己的数据中心和服务器场,所以我们不必跨越很多障碍)

扫码关注云+社区

领取腾讯云代金券