【问题标题】:How to use appsettings.Development.json variables in code如何在代码中使用 appsettings.Development.json 变量
【发布时间】:2018-01-02 19:04:15
【问题描述】:

我有一个 appsettings.json 和 appsettings.Development.json。我需要根据环境分配 SmtpServer 名称。

appsettings.json 中的配置文件是:

{ 
  "EmailConfiguration": {
   "SmtpServer": "mail.MYDOMAIN.com"
  }
}

而在 appsettings.Development.json 中是:

{ 
  "EmailConfiguration": {
    "SmtpServer": "mail.MYLOCAL.com"
  }
}

当我在 Startup ConfigureServices() 中分配配置时,如下所示:

var emailconfig = Configuration.GetSection("EmailConfiguration").Get<EmailConfiguration>();
services.AddSingleton<IEmailConfiguration>(emailconfig);

它总是使用 appsettings.json ('mail.MYDOMAIN.com') 而不是 appsettings.Development.json。

如何修改此代码以使用正确的环境设置?

【问题讨论】:

  • 你在什么构建配置下运行?
  • 在 VS 中,我使用的是 Debug 配置,其中我有: 环境变量 名称:ASPNETCORE_ENVIRONMENT 值:开发。
  • 你应该读过我认为的关于配置的文档:docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/…
  • 看起来 P-Finny 在那个文档页面下做了所有事情。 @P-Finny 你试过杀死 iisexpress 吗?
  • @DanSchnau 我做得更好并重新启动了我的机器以确保 IISExpress 被清除。我在 Startup 方法中放入了一个变量,并确认我的环境是“开发”。在设置中再次阅读文档后,我没有看到任何具体说明返回 Configuration.GetSection() 将获得环境特定变量的内容。你知道这是否应该发生吗?还是我需要调用更具体的环境方法?

标签: asp.net-core


【解决方案1】:

答案是我只需要两个不同的 appsettings 文件中的环境变量。我的问题是我的一个配置设置中缺少右括号,这意味着 appsettings.Development.json 不会替换 appsettings.json 变量,因为它们不匹配。哎呀.....

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2014-06-03
    • 2022-01-10
    • 2021-10-17
    • 2021-01-13
    • 2021-06-02
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多