2014-09-04 6 views
12

मैं का उपयोग वेब अनुप्रयोग के माध्यम से तैनात करने के लिए कर रहा हूं।MSDeploy - पैरामीटर को पैरामीटर में वैकल्पिक/खाली होने दें। Xml

मैं अपने आवेदन के , विशेष रूप से settings अनुभाग में हेरफेर करने के लिए paramaters.xml फ़ाइल का उपयोग कर रहा हूं।

मेरे पास कुछ सेटिंग्स हैं जहां यह केवल एक विशिष्ट वातावरण के लिए मूल्य रखने के लिए मान्य है और शेष समय मूल्य खाली होना चाहिए (यानी, संपत्ति के उत्पादन पर केवल मूल्य होना चाहिए)। हालांकि, 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> 

उत्तर

30

मैं इस मुद्दे के पार एक समय पहले भाग गया और Richard Szalay's blog पर समाधान मिल गया। आप अपने पैरामीटर घोषणा करने के लिए parameterValidation जोड़ने की जरूरत:

<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> 
+0

धन्यवाद है कि यह किया! और SO –

+2

में आपका स्वागत है मैं बस यह इंगित करना चाहता हूं कि यह [IIS.net पृष्ठ] (http://www.iis.net/learn/develop/windows-web-plication-gallery/reference-for-the-web- एप्लिकेशन -पैकेज) एमएसबिल्ड 14 के साथ काम नहीं करता है। 'पैरामीटर वैलिडेशन' में 'टाइप' विशेषता' के बजाय 'दयालु' विशेषता होनी चाहिए। –

4

मुझे लगता है कि आप <parameterValidation /> के लिए देख रहे हैं।

अपने parameters.config में:

<parameter name="facebookUserToken" description="" defaultValue=""> 
    <parameterValidation kind="AllowEmpty" /> 
    <parameterEntry kind="XmlFile" scope="Web.config" 
     match="XPath removed for readability"> 
    </parameterEntry> 
</parameter> 
संबंधित मुद्दे