首页 文章

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

提问于
浏览
1

我正在尝试在我正在构建的asp.net MVC3 Web应用程序中执行一系列特定于环境的配置 . 我对这个平台有些新手,并且遇到了一些环境特定配置的问题 .

我有3个配置文件:

  • Web.config

  • Web.Debug.config

  • Web.Release.config

我已将我的connectionString配置放在Debug / Release文件中并且它可以工作,所以我知道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中添加了一个特定于Debug的属性:

<JanRainConfig Key="key" TokenUrl="http://localhost:55739/Account/LogOn" />

The problem

如果我获得了我在Web.config中定义的属性,它就能完美运行 . 如果我尝试仅在Web.config中定义属性或在Web.Debug.config中定义它并覆盖它(并添加xdt:Transform =“Replace”),则属性设置为空白(在前一种情况下)或包含Web.config中的设置(在后者中) - 好像我的Web.Debug.config中的配置被忽略了 .

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

1 回答

  • 2

    Web.config转换仅在发布项目时应用 . 你肯定不是第一个,这是错误的(包括我) . 我建议在默认的web.config中使用debug-configuration,并在.release.config文件中仅应用自定义逻辑 .

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

相关问题