【发布时间】: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