【问题标题】:Creating a server-level Web Deploy package创建服务器级 Web 部署包
【发布时间】:2015-05-27 15:54:17
【问题描述】:

在 IIS 服务器管理员为我手动创建站点后,我可以使用 Web Deploy 创建可以导入现有 IIS 站点的包。

我可以使用 Web Deploy 创建可以作为站点而不是应用程序导入的包吗?

当我尝试导入现有的包时,我收到了这个丑陋的错误。

【问题讨论】:

  • 我想问同样的问题。当我使用提供的命令行 .cmd 并使用适当的数据编辑 SetParameters.xml 时,我只能在服务器级别导入
  • 我发现您可以使用 PowerShell DSC 来部署站点。它与 Web Deploy 没有任何关系,但看起来要灵活得多。
  • 看起来也不错。我确实坚持使用 Web Deploy 并使用 parameters.xml 来配置和执行 Web.deploy.cmd /Y -setParamFile:"Web.SetParameters-<ENVIRONMENT>.xml"
  • 我很想看看您如何设置构建配置/Web 配置转换/parameters.xml 文件@spankmaster79

标签: asp.net iis webdeploy


【解决方案1】:

这可能不是问题的答案,因为无法找到有关如何创建站点包的信息。

但正如您在 cmets 中所要求的,这是我关于如何使用由打包过程创建的 .cmd 文件在站点级别安装的方法。

步骤 1

我在构建过程中使用 msbuild 创建了一个包。我刚刚在我们的正常构建中添加了一个额外的步骤,在部署目录中创建项目文件。

<Target Name="CreateDeploymentPackage">
    <MSBuild Projects="$(CurrentProject).csproj" Targets="Package"
      properties="Platform=$(Platform);
      Configuration=$(Configuration);
      DeployOnBuild=false;
      DeployTarget=Package;
      PublishProfile=$(Environment);
      PackageLocation=$(DeployDirectory)\_PublishedWebsites\DeployPackage\$(CurrentProject).zip;
      PackageAsSingleFile=true;
      _PackageTempDir=$(PackageOutputDir)\temp;">
    </MSBuild>
</Target>

我确实设置了一个特定的 PublishProfile,以便能够为我在构建时所知道的所有内容传递 Web.config 转换。

第二步

我在我的项目中创建了一个Parameters.xml,以便能够更改包安装时间的参数。

<?xml version="1.0" encoding="utf-8" ?> 
<parameters>
  <parameter name="Log4net to email"
   description="Please provide the email address for Log4net."
   defaultValue="itsupport@ourcompany.com"
   tags="">
    <parameterEntry kind="XmlFile" scope="\\web.config$" match="//log4net/appender[@name='SmtpAppender']/to/@value" />
  </parameter>

  <parameter name="Webservice address"  
    description="Please provide the endpoint address for the document web service" 
    defaultValue="http://test.services.ourcompany.com/Service.svc"
    tags="">
    <parameterEntry kind="XmlFile" scope="\\web.config$" match="//system.serviceModel/client/endpoint/@address" />
  </parameter>

  <parameter name="Elmah error email subject"
    description="Please provide the elmah errormail subject"
    defaultValue="Our Portal (Production) | An unexpected error occurred"
    tags=""> 
    <parameterEntry kind="XmlFile" scope="\\web.config$" match="//elmah/errorMail/@subject" />
  </parameter>
</parameters>

您可能会想为什么Parameters.xml 中没有站点名称和连接字符串。但是这些是在创建部署包时自动配置的,可以使用 SetParameters.xml 进行设置

在这里阅读:Why are some Web.config transforms tokenised into SetParameters.xml and others are not?

第三步

然后我为我们拥有的每个环境(prod、staging、test、dev)创建了一个 SetParameters-.xml。这是一个暂存的示例:

<?xml version="1.0" encoding="utf-8"?>
<parameters>
  <setParameter name="IIS Web Application Name" value="staging-sitename.ourcompany.com" />
  <setParameter name="Log4net to email" value="webdev@ourcompany.com" />
  <setParameter name="Webservice address" value="http://staging.services.ourcompany.com/Service.svc" />
  <setParameter name="Elmah error email subject" value="Our Portal (Staging) |  An unexpected error occurred" />
  <setParameter name="PortalEntities-Web.config Connection String" value="metadata=res://*/Src.Entity.PortalEntities.csdl|res://*/Src.Entity.PortalEntities.ssdl|res://*/Src.Entity.PortalEntities.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=test.sql.ourcompany.com;Initial Catalog=Portal_Staging;User Id=<userid>;Password=<password>;Application Name ='OurPortal';Connection Timeout=180;MultipleActiveResultSets=True&quot;" />
</parameters>

第四步

然后我使用以下命令在服务器上执行安装

Portal.Web.deploy.cmd /Y -setParamFile:"Portal.Web.SetParameters-STAGING.xml"

还有很大的改进空间,我想自动化更多,但这是我现在所拥有的。

【讨论】:

  • 这与我现在拥有的非常相似。我不满意必须为每个环境设置一个 Web.$(Configuration).config 文件,但我也不想将特定于环境的常量移动到 parameters.xml 文件中。我希望有更好的方法。
  • 我希望也有,仍在搜索,希望我确实错过了某个地方
  • 也许使用 *.wpp.targets 文件来驱动 XDT 转换而不是 $(Configuration) 变量?因此,您将始终构建和部署 Release 配置,可选择应用 Web.Release.config,然后最后让 *.wpp.targets 中的自定义部署步骤应用特定于环境的转换。
  • 那我该如何为不同的环境创建不同的 *.wpp.targets 文件呢?我正在使用 .wpp.targets 文件为某些文件夹和文件的删除操作应用自定义跳过规则
  • 您将拥有一个 wpp.targets 文件。在该文件中,您将有一个自定义构建步骤,该步骤应用来自Web.$(Environment).config 的 XDT 转换。这将在应用Web.$(Configuration).config 之后发生。最后,您将指定 /p:Environment=STAGING 作为 MSBuild 参数。
【解决方案2】:

基本上不是安装在站点的根目录,而是部署到站点内的文件夹!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2012-09-21
    • 1970-01-01
    • 2011-06-30
    相关资源
    最近更新 更多