【问题标题】:MSDeploy - Allow Parameter to be optional / empty in parameters.xmlMSDeploy - 允许参数在 parameters.xml 中为可选/为空
【发布时间】:2014-09-04 11:07:03
【问题描述】:

我正在使用 通过 部署 Web 应用程序。

我正在使用paramaters.xml 文件来操作我的应用程序的,特别是应用程序settings 部分。

我有一些设置,其中只有特定环境的值才有效,其余时间该值应为空白(即,属性应仅在生产中具有值)。但是,当我 not 指定值时,MSDeploy 会给我这个异常:

 Microsoft.Web.Deployment.DeploymentException: 
   The 'facebookUserToken' argument cannot be null or empty.
   at Microsoft.Web.Deployment.DeploymentSyncParameterValidation.Validate(String parameterName, String parameterValue)
   at Microsoft.Web.Deployment.DeploymentSyncParameter.set_Value(String value)
   at Microsoft.Web.Deployment.DeploymentSyncParameterCollection.LoadFromFile(XPathNavigator nav, String fileName, Boolean ignoreExtraSetParameters)
   at Microsoft.Web.Deployment.DeploymentSyncParameterCollection.Load(Stream stream, String fileName, Boolean ignoreExtraSetParameters)
   at Microsoft.Web.Deployment.DeploymentSyncParameterCollection.Load(String fileName, Boolean ignoreExtraSetParameters)
   at MSDeploy.MSDeploy.HandleSetParameters(DeploymentObject sourceObject, Random random)
   at MSDeploy.MSDeploy.ExecuteWorker()
   at MSDeploy.MSDeploy.Execute()
   at MSDeploy.MSDeploy.Main(String[] unusedArgs)

如何配置 MSDeploy 以允许 参数 具有空值?

web.config:

<applicationSettings>
    <SO.Example>
        <setting name="FacebookUserToken" serializeAs="String">
           <value></value>
        </setting>
    </SO.Example>
</applicationSettings>

parameters.config:

   <parameter name="facebookUserToken" description="" defaultValue="">   
      <parameterEntry kind="XmlFile" scope="Web.config"
      match="XPath removed for readability">
       </parameterEntry>
   </parameter>

【问题讨论】:

    标签: msdeploy asp.net-mvc teamcity web.config c# asp.net-mvc teamcity msdeploy web-config


    【解决方案1】:

    我不久前遇到了这个问题,并在Richard Szalay's blog 找到了解决方案。您需要将 parameterValidation 添加到您的 parameter 声明中:

    <parameters> 
       <parameter name="ReplaceVariable"
              description="Sample variable that allows empty values" defaultValue="">
         <parameterValidation kind="AllowEmpty" />
         <parameterEntry type="TextFile" scope="Web\.config$" match="TextToReplace" /> 
       </parameter> 
    </parameters> 
    

    所以对于你的具体情况:

      <parameter name="facebookUserToken" description="" defaultValue="">   
          <parameterValidation kind="AllowEmpty"/>
          <parameterEntry kind="XmlFile" scope="Web.config"
          match="XPath removed for readability">
           </parameterEntry>
       </parameter>
    

    【讨论】:

    • 我只想指出这个IIS.net page 不适用于MsBuild 14。parameterValidation 应该有kind 属性而不是type 属性。
    【解决方案2】:

    我想你正在寻找&lt;parameterValidation /&gt;

    在您的 parameters.config 中:

    <parameter name="facebookUserToken" description="" defaultValue=""> 
        <parameterValidation kind="AllowEmpty" />  
        <parameterEntry kind="XmlFile" scope="Web.config"
           match="XPath removed for readability">
        </parameterEntry>
    </parameter>
    

    【讨论】:

      猜你喜欢
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多