我正在嘗試在我正在構建的一個asp.net MVC3 Web應用程序中執行一些特定於環境的配置。我對平臺有點新,並且遇到了一些與環境相關的配置問題。Web.config中特定於環境的customSection屬性
我有3個配置文件:
- 的Web.config
- Web.Debug.config
- Web.Release.config
我已經放在我的connectionString配置調試/發佈文件,它的工作原理,所以我知道asp.net至少識別我的調試/發佈設置的一些概念。
我還添加了一些自定義配置節在Web.config中是這樣的:
<configSections>
<section name="GitHubConfig" type="SmartGigs.Controllers.GitHubConfig" />
<section name="JanRainConfig" type="SmartGigs.Services.JanRainConfig" />
</configSections>
然後我實際上是在Web.config中是這樣定義它們:
<GitHubConfig ClientId="c" Secret="s" />
,並嘗試加載他們是這樣的:
var jrConfig = (JanRainConfig)WebConfigurationManager.GetSection("JanRainConfig");
var gitHubConfig = (GitHubConfig) WebConfigurationManager.GetSection("GitHubConfig");
最後,我添加一個調試特定的屬性到Web.Debug.config:
<JanRainConfig Key="key" TokenUrl="http://localhost:55739/Account/LogOn" />
問題
如果我得到我在Web.config中定義的屬性,它完美。如果我嘗試僅在Web.config中定義一個屬性或在Web.Debug.config中定義它並覆蓋它(並添加xdt:Transform =「Replace」),則屬性設置爲空(在前一種情況下)或包含Web.config中的設置(在後者中) - 就好像我在Web.Debug.config中的配置被忽略。
什麼是正確的方式來完成我想要做的?
AFAIK只有在使用Visual Studio發佈應用程序時纔會識別平臺特定的配置。從你的問題我不能推斷你是否從VS啓動項目,或實際上發佈到IIS之前使用它? – 2011-12-18 19:13:28