gpt4 book ai didi

web-deployment - 部署 msdeploy iisApp 包时未设置应用程序池

转载 作者:行者123 更新时间:2023-12-01 17:00:28 25 4
gpt4 key购买 nike

我遇到 msdeploy 未同步站点(例如默认网站)子应用程序的应用程序池信息的问题。

本质上,我希望能够创建 webdeploy/msdeploy 包作为多个开发分支的夜间构建过程的一部分,然后将这些特定于分支的包部署到服务器进行冒烟测试。一切似乎都有道理,但不幸的是我找不到一种方法来设置已部署包的 iisApp 打算使用的应用程序池。我可以创建和部署包含 appPoolConfig 提供程序的包来支持应用程序池本身的创建,但如果我无法在正在部署的应用程序上设置应用程序池,那么这就没用了。

顺便说一句,我觉得我几乎在重复其他看似相似的问题。对于使用 appPoolconfig 或 appPoolExtension 给出了各种答案,但我对这些没有运气。根据我的阅读,appPoolConfig 用于同步应用程序池本身,而不是“分配”给应用程序的应用程序池。顺便说一句,这种类型的同步操作效果很好。至于 appPoolExtension 我不知道它在打开时实际上会做什么,因为我发现生成的包没有任何区别。

我可以使用一组简单的步骤重新创建问题,这些步骤仅使用 msdeploy,而不使用 WPP/webdeploy/msbuild,其目的是仅使用最低级别的工具:

Windows 8(注意:我也可以在 Win 2008 R2 上复制该问题)、已安装 IIS 和 Web Deploy 3.0。

  1. 假设存在默认网站并安装了 .NET 4.0,请创建一个名为 TestPool 的新应用程序池。
  2. 在“默认网站”下创建一个名为 TestApp 的新应用程序,并将其应用程序池分配给第 1 步中创建的 TestPool。
  3. 打开命令提示符,并可访问 msdeploy 的路径。
  4. 类型 >

    msdeploy -verb:sync -source:iisApp="Default Web Site/TestApp" -dest:package=c:\temp\testapp.zip,encryptPassword="password" -enableLink:AppPoolExtension
  5. 现在我们有了一个包,我们可以从默认网站下删除 TestApp,并删除在初始应用程序创建过程中创建的所有剩余物理文件夹。
  6. 假设我们仍然在 IIS 中将 TestPool 应用程序池配置为可用池,请输入 >

    msdeploy -verb:sync -source:c:\temp\testapp.zip,encryptPassword="password" -dest:iisApp="Default Web Site/TestApp" -enableLink:AppPoolExtension
  7. 转到 IIS 管理器并在“默认网站”下选择我们的 TestApp。单击基本设置...,应用程序池不是所需的测试池,而是为默认网站设置的默认池。

感谢任何帮助。

编辑:只需对上述步骤进行变体,并在两个 msdeploy 命令行中将“iisApp”更改为“appHostConfig”,并且保留应用程序池设置,因此从 msdeploy 的角度来看是成功的。但是,如果这是解决方案,如何通知 VS 2012 发布进程使用 appHostConfig 而不是 issApp?

编辑:在回答我自己的编辑时,这个答案有效:https://stackoverflow.com/a/12741525/739097 。这引出了另一个问题,即如何在没有 IIS 的构建服务器上集成包创建,但我的想法是,首先根据所需的 IIS 设置、动态参数等创建一个模板包,但基本上没有内容。然后,构建过程将仅创建一个内容包,并将其与模板包同步以创建最终的部署包。

最佳答案

通过您的编辑,您的问题变得更加多元化,但我会一次解决一件事。

只有 appHostConfig 提供程序可以创建全局 IIS 对象,例如站点和应用程序池。

iisApp 只是 createApp(可以将目录标记为应用程序)和 contentPath(同步文件/文件夹)的组合。

为了打包/同步 appHostConfig 提供程序而不是 iisApp 提供程序,您需要执行两件事:

  1. 将您的项目文件标记为使用带有有效 URL 的 IIS(您可以覆盖 MSBuild 文件,通过定义 WebPublishPipelineWAPProjectSettings 来检查这些属性)
  2. 在您的发布配置文件中声明 IncludeIisSettings=true

但是,是的,这需要在构建服务器上安装 IIS(或者至少需要构建服务器能够访问 IIS 实例)。毕竟,MSDeploy 是一个Web 同步框架

您可能会做的是手动生成一个包,其中包含您的网站定义,以及另一个在构建过程中生成的包,其中包含内容。不过,请小心这一点,因为如果应用程序池包含高级选项并且包不是由与部署目标相同版本的 IIS 生成的,您可能会遇到错误。

关于web-deployment - 部署 msdeploy iisApp 包时未设置应用程序池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15961535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com