C# Web.config中特定于环境的customSection属性

C# Web.config中特定于环境的customSection属性,c#,.net,asp.net-mvc-3,C#,.net,Asp.net Mvc 3,我正在尝试在我正在构建的asp.net MVC3 web应用程序中进行一系列特定于环境的配置。我对这个平台有些陌生,在特定于环境的配置方面遇到了一些问题 我有3个配置文件: Web.config Web.Debug.config Web.Release.config 我已将connectionString配置放在调试/发布文件中,它可以正常工作,因此我知道asp.net至少可以识别调试/发布设置的一些概念 我还在Web.config中添加了一些自定义配置部分,如下所示: <conf

我正在尝试在我正在构建的asp.net MVC3 web应用程序中进行一系列特定于环境的配置。我对这个平台有些陌生,在特定于环境的配置方面遇到了一些问题

我有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>
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中的配置被忽略一样


完成我要做的事情的正确方法是什么?

Web.config转换仅在发布项目时应用。你肯定不是第一个弄错的人(包括我)。我建议在默认web.config中使用调试配置,并在.release.config文件中仅应用自定义逻辑


有点遗憾的是,VS在直接启动项目时没有拾取转换后的web.config,但是转换过程是一个自定义的MSBuild任务,因此,可以在编译过程中添加并执行它。

AFAIK只有在使用Visual Studio发布应用程序时才能识别特定于平台的配置。从您的问题中,我无法推断您是从VS启动该项目,还是在使用它之前将其发布到IIS?我是通过Visual Studio启动它的。事实上,你的评论引导我走上了解决问题的道路——我从根本上误解了Web.config转换的工作原理。如果你能把你的评论转换成答案,我会接受的。谢谢
<JanRainConfig Key="key" TokenUrl="http://localhost:55739/Account/LogOn" />