gpt4 book ai didi

visual-studio - 如何通过VS和MSDeploy设置控制用于部署的AppPool

转载 作者:行者123 更新时间:2023-12-03 11:58:23 25 4
gpt4 key购买 nike

在为我的Web应用程序构建部署软件包时,该软件包包含一个archive.xml文件,该文件包含以下内容:

<createApp
applicationPool=""
MSDeploy.applicationPool="1"
appExists="True"
MSDeploy.appExists="1"
... />

题:

如何控制Web应用程序安装到的应用程序池,并在某些情况下创建新的应用程序池?是否可以更改VS设置来控制上述输出,否则会影响部署时应用程序池的方式?

到目前为止,我发现了什么:

1. MSBuild参数

根据 one SO post的说明,我可以通过添加以下选项来告诉msbuild使用应用程序池,但在生成的输出中看不到任何区别:
/p:IncludeAppPool=true

2.定制parameters.xml文件

Another post on setting the app pool for msdeploy似乎暗示我可以修改生成的 parameters.xml文件,以便可以将应用程序池名称指定为msdeploy的参数。该文件位于zip包中,因此很难进行自定义。如果我将其更改为存档,则文件更易于访问。

3.更改VS设置

Howto deploy a webapp页面似乎暗示我可能需要从IIS Express切换到IIS,然后启用一些复选框。在我的项目属性页上,不管“包括IIS Express中配置的IIS设置”复选框设置(我目前未选中)如何,都禁用 Include application pool settings used by this Web project复选框。接下来,我将尝试切换到完整的IIS,看看是否能更好地控制我。

4.使用cscript创建一个应用程序池

看来我可以 create an app pool with a separate tool了,但是我不确定它是否仅TFS。这是我以前从未见过的工具,但它可能是功能强大的工具。

5. MSDeploy具有一个appPoolConfig提供程序

MSDeploy的 appPoolConfig provider看起来很有希望,因为我可能可以手动设置一个应用程序池,然后将其用作同步源,但是至少它只有一次。

最佳答案

我也开始研究如何实现这一目标的可能性。

我还有一些研究要做,但是我可以给你以下几点建议:

  • IncludeAppPool = true启用AppPoolExtension,当将网站从一个位置同步到另一个位置时,它还会复制应用程序池。
    我猜它在创建包时不会起作用。除非您通过本地IIS运行WAP且您在软件包中包含IIS设置,否则可能会除外。
  • zipt中确实存在
  • Parameters.xml。但是,如果将Parameters.xml文件放在WAP的根目录中,则可以指定自己的参数,打包时将与VS创建的参数合并。
  • 您确实可以检查“包括该Web项目使用的应用程序池设置”(实际上:这会将msbuild属性IncludeAppPool设置为true)。 list 将保存一个用于创建应用程序池的条目。但是,仅当您从也在本地运行WAP的计算机上创建软件包时才有可能。在使用构建服务器(这是我的情况)
  • 时,这不是一个选项
  • 可以使批处理脚本从命令行运行msdeploy,并使用AppPool提供程序创建apppool。尽管这对我来说似乎有些笨拙,因为我想将Apppool创建包括在我的VS(或构建服务器)生成的包
  • 的 list 中
  • 我现在正在调查是否可以使用wpp.targets文件在我的 list 中插入apppoolconfig提供(更多信息herehere

  • 如果我找到解决方法,我可能会回覆您。

    编辑:

    我发现无法使用appPoolConfig提供程序打包创建新应用程序池的方法。我被迫写自己的提供者。我是根据发现的一些(非常基本的)示例并通过对现有的某些提供程序进行反向工程来实现的。我基本上所做的是创建一个包装类,该包装类调用c:\ windows \ system32 \ inetsrv \ appcmd并将此功能公开为MSDeploy提供程序。 appcmd是用于配置iis的命令行工具,您可以使用它来创建apppools ...如果有人感兴趣,我可以共享一些代码...

    嗨,另一个编辑

    抱歉,我花了这么长时间,但是我将一些自定义AppPoolConfigProvider的代码放到了skydrive上,您可以访问它 here
    或者 here是要访问它的要点仓库。

    要使用此提供程序,应将已编译的dll放在Extensibility文件夹下(您必须在“c:\ Program Files(x86)\ IIS \ Microsoft Web Deploy V2 \”下自行创建)。您可以在线找到有关此的更多信息。

    我在xxx.wpp.targets文件中使用提供程序,如下所示:
    <Target Name="AddConfigAppPool" Condition="'$(RunConfigAppPool)'">
    <Message Text="Adding configAppPool provider" />
    <ItemGroup>
    <MsDeploySourceManifest Include="configAppPool">
    <path>@(__DefaultDeployEnvironmentSetting->'%(AppPoolName)')</path><!-- Represents the name of the AppPool, required-->
    <managedRuntimeVersion>$(DeployManagedRuntimeVersion)</managedRuntimeVersion>
    <managedPipelineMode>$(DeployManagedPipelineMode)</managedPipelineMode>
    <processModel_identityType>@(__DefaultDeployEnvironmentSetting->'%(AppPoolIdentyType)')</processModel_identityType>
    <processModel_userName>@(__DefaultDeployEnvironmentSetting->'%(AppPoolUserName)')</processModel_userName>
    <processModel_password>@(__DefaultDeployEnvironmentSetting->'%(AppPoolUserPassword)')</processModel_password>
    <processModel_idleTimeout>00:00:00</processModel_idleTimeout>
    <AdditionalProviderSettings>managedRuntimeVersion;managedPipelineMode;processModel_identityType;processModel_userName;processModel_password;processModel_idleTimeout</AdditionalProviderSettings>
    <!--Possible additional provider settings: queueLength,autoStart,enable32BitAppOnWin64,managedRuntimeVersion,managedRuntimeLoader,enableConfigurationOverride,managedPipelineMode,CLRConfigFile,passAnonymousToken,startMode,processModel_identityType,processModel_userName,processModel_password,processModel_loadUserProfile,processModel_logonType,processModel_manualGroupMembership,processModel_idleTimeout,processModel_maxProcesses,processModel_shutdownTimeLimit,processModel_startupTimeLimit,processModel_pingingEnabled,processModel_pingInterval,processModel_pingResponseTime,recycling_disallowOverlappingRotation,recycling_disallowRotationOnConfigChange,recycling_logEventOnRecycle,recycling_periodicRestart_memory,recycling_periodicRestart_privateMemory,recycling_periodicRestart_requests,recycling_periodicRestart_time,recycling_periodicRestart_schedule_[value='timespan']_value,failure_loadBalancerCapabilities,failure_orphanWorkerProcess,failure_orphanActionExe,failure_orphanActionParams,failure_rapidFailProtection,failure_rapidFailProtectionInterval,failure_rapidFailProtectionMaxCrashes,failure_autoShutdownExe,failure_autoShutdownParams,cpu_limit,cpu_action,cpu_resetInterval,cpu_smpAffinitized,cpu_smpProcessorAffinityMask,cpu_smpProcessorAffinityMask2-->
    </MsDeploySourceManifest>
    </ItemGroup>

    对不起,我无法详细说明这一点,但是距我编写此代码已经有一段时间了,我根本没有时间。您可以在线找到一些有关创建自定义提供程序的信息。如果您还有其他问题,请在有空的时候尝试回答。

    希望这可以帮助

    关于visual-studio - 如何通过VS和MSDeploy设置控制用于部署的AppPool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7690954/

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