簡體   English   中英

web.config中的多個appSettings部分

[英]Multiple appSettings section in web.config

反正有可能嗎? 例如,通過命名appSettings節,或將appSettings嵌套在其他命名節中。

我想要實現以下目標:

<section name="development">
    <appSettings>
    </appSettings>
</section>

<section name="test">
    <appSettings>
    </appSettings>
</section>


string connectionString 
   = ConfigurationManager.GetSection("test").AppSettings["connectionString"];

這是什么模式?

假設您要執行的操作只是在部署到不同環境時簡單地應用不同的連接字符串(或操縱其他web.config設置),那么您要尋找的是config transforms 這是處理這種情況的最快,最簡單和正確的方法。

appSetting元素支持“文件”屬性,該屬性可讓您指定可以放置鍵/值的文件名。

這使您不必與團隊共享在user.config中指定的值。

認為 ,如果您在父配置文件和子配置文件中定義了一個鍵,則子值將被忽略,父值將受到尊重。

進一步閱讀

您試圖實現的目標將無法以這種方式工作。 為此,“最佳”(IMHO)技術是創建3個文件app(或web).config dev.config和test.config(可能還有release.config)。 然后,在解決方案屬性中,您可以執行預構建命令以將相應的.config文件復制到app.config(或web.config)中,以使其根據構建類型變為“活動”狀態。

您可以了解有關此內容的更多信息http://msdn.microsoft.com/en-us/library/aa983464%28v=vs.80%29.aspxhttp://msdn.microsoft.com/en-us/library/ ke5z92ks.aspx

斯科特·漢瑟曼(Scott Hanselman)撰寫了有關此方法的精彩文章: http : //www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx

因此,您需要在運行時執行以下操作:

如果您想在運行時獲得不同的設置,那么可能最有效的方法是建立一個命名約定,例如:

<appSettings>
   <add name="fearofawhackplanet.connectionString" value="your connection string" />
   <add name="cosCallis.connectionString" value="my connection string" />
</appSettings>

我相信您可以從那里看到如何在運行時進行管理以獲取所需的鍵/值。

我發現自定義部分對此最為靈活。 請參見MSDN中的“ configSections元素(常規設置架構)”。

<sampleSection serverInstanceLabel1="alex" setting1="Value1"
               setting2="value two"/> 

因此,在您的情況下,您可以具有以下部分:sampleSection,sampleSection1,...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM