我正在尝试在我正在构建的一个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