【问题标题】:Multiple web deploys for asp.net用于 asp.net 的多个 Web 部署
【发布时间】:2012-08-08 22:49:22
【问题描述】:

我有一个安装在多个不同客户服务器上的应用程序。它们每个都有不同的 web.config 文件和不同的虚拟文件夹。目前我正在编译、手动复制、设置 IIS、更改 web.config 并为每次安装添加虚拟文件夹,并且在更新时再次添加。

我根本不知道如何使用诸如 Web Deploy 或 Deployment Package 之类的东西进行部署,这些东西可以让我创建不同的配置文件或如何管理虚拟文件夹(我假设我只会部署空文件夹并且仍然必须这样做这部分手动)。我可以从一开始就设置 IIS 和虚拟文件夹,但我希望每个客户端都能够下载新版本并在没有我输入的情况下安装它们(因为有些客户端对远程访问很有趣)。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    您可以为每个环境设置构建配置。通常,您可以获得开箱即用的 Debug 和 Release。我喜欢用 Development、Staging 和 Production 配置替换它们,这允许每个环境使用不同的 web.config。

    当然,在发布的时候,还是要确保选择正确的配置。

    【讨论】:

    • 你是说为每个客户端创建一个构建配置?
    • 覆盖虚拟文件夹有没有办法在发布和预编译中排除文件夹?
    • 此外,Publish 方法会创建一个包,其中包含一个名为“SetParameters”的文件。我可以为每个 web.config 更改此设置或保留要分发的副本,这会很好,因为我只需要使用一个构建。但是它不包含此文件中的应用程序设置,知道如何包含它们吗?
    【解决方案2】:

    我不喜欢 Web Deploy 和其他方案,因为与桌面不同,Web 服务器都倾向于具有独特的配置。

    在我的例子中,我们所有的 Web 应用程序都使用自定义编写的 VBScripts 进行部署(比批处理文件更令人愉快,并且无需重新学习 PowerShell)。 VBScript(及其默认的 COM 对象库)为编写部署脚本提供了一个引人注目的平台。如果您不能忍受语法,您可以使用相同的工具使用 JScript。奖励:Visual Studio 仍然提供 Windows 脚本 IntelliSense,尽管它不是广告功能)。

    我最近的部署脚本很简单:它是一个 VBScript(由 VS 的 Post-build 命令行调用),它使用 7-Zip 打包 Web 应用程序的文件,然后生成一个 ftp.exe 批处理文件(然后运行 ​​ftp .exe 本身)将文件上传到服务器,它还会生成一个名为“Unpack.cmd”的上传文件,该文件调用 7-Zip 将文件提取到正确的位置。唯一的手动步骤是在服务器上执行 Unpack.cmd,但例如可以使用远程 PowerShell 来完成。

    为什么需要独立于应用程序自定义 IIS 配置?你不能把所有的东西都放在你的web.config文件中<system.webServer>下面吗?

    【讨论】:

    • Web 应用程序是现有桌面应用程序的扩展,该应用程序具有存储桌面应用程序引用的图像/文档的文件夹。由于我们有几个客户端,它们都有不同的文件夹和数据库位置,因此需要虚拟文件夹并创建单独的配置文件。
    • 我们通过将客户端/订阅者的文件存储在存储在其数据库后端的虚拟文件系统中解决了这个问题,这意味着实际上没有数据存储在应用程序下,这简化了负载平衡(因为这意味着可以使用任何前端 Web 服务器来处理请求)。
    • 我通常会这样做,但我无法这样做,因为这会影响他们使用的现有桌面应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 2012-02-29
    • 2012-03-30
    相关资源
    最近更新 更多