2011-10-06 20 views
7

的不同部分,我引用一個appSetting我appSettings名爲Appsettings.Dev.Config單獨的配置文件中定義的,我有我的web.config文件內部的文件,像這樣我如何在web.config中

<appSettings configSource="ConfigFiles\AppSettings.Dev.config"/> 

比方說該文件中的設置之一是

<add key="MailerEmailAccount" value="[email protected]" /> 

我可以訪問內部的web.config其他地方設置MailerEmailAccount的價值?怎麼樣?

回答

4

不,網絡配置文件不能從本身拉「設置」;它根本不是動態的。唯一的動態功能是包含其他.config的功能,但這只是「將所有這些設置吸引到一起,就好像它們是我的一部分」一樣。

+0

我這樣做(拉從另一個文件設置)的appSettings和使用的ConnectionStrings configSource屬性。這似乎並不適用於system.net標記(或者system.net標記本身)內的mailSettings標記。除了來自其他文件的appSettings和connectionStrings之外,還有其他方法可以吸引用戶嗎? – floatingfrisbee

+0

我不確定是否有限制;像你我主要用於appSettings和connectionStrings。如果你使用VS2010,你也可以考慮Web.Config轉換:http://weblogs.asp.net/srkirkland/archive/2009/10/13/common-web-config-transformations-with-visual-studio -2010.aspx – CodingGorilla

+0

原來,system.net和mailSettings標籤不能從另一個文件中獲取。但是,smtp標記(它是mailSettings的子項)可以是。我正在使用web.config轉換,但這個特殊問題無法通過這個解決。謝謝。 – floatingfrisbee

4

如果您創建的定製ConfigurationSection可能會從appSettings中提取值,這可能是可能的。

下面是說明如何創建自定義配置的一篇文章:
http://haacked.com/archive/2007/03/12/custom-configuration-sections-in-3-easy-steps.aspx

我不知道如果這是你在找什麼,但它是我能想到的閱讀的唯一途徑從web.config內設置web.config

編輯

我沒有測試過這一點,但也許這樣的事情會的工作?:

[ConfigurationProperty("localName", IsRequired = true, IsKey = true)] 
public string LocalName 
{ 
    get 
    { 
     return this["localName"] as string; 
    } 
    set 
    {     
     this["localName"] = WebConfigurationManager.AppSettings.Get(value); 
    } 
} 
+0

感謝您的駭客鏈接和代碼片段。不知道代碼適用於我現在需要的,但它是一個好主意。 – floatingfrisbee