我可以在Azure中的多个.net核心web作业中集中应用程序设置吗?
我有一个Azure web应用程序,在后端有几个web作业。到目前为止,我一直在使用传统的.Net创建这些web作业。这些web作业的一个核心方面是,它们都可以访问Azure门户中定义的全局配置属性,如下所示: 我在传统的.Net应用程序中引用了以下设置:我可以在Azure中的多个.net核心web作业中集中应用程序设置吗?,azure,asp.net-core,configuration,asp.net-core-2.0,azure-webjobs,Azure,Asp.net Core,Configuration,Asp.net Core 2.0,Azure Webjobs,我有一个Azure web应用程序,在后端有几个web作业。到目前为止,我一直在使用传统的.Net创建这些web作业。这些web作业的一个核心方面是,它们都可以访问Azure门户中定义的全局配置属性,如下所示: 我在传统的.Net应用程序中引用了以下设置: var appKey = ConfigurationManager.AppSettings["RingCentral_AppKey"]; class Program { public static IConfiguration S
var appKey = ConfigurationManager.AppSettings["RingCentral_AppKey"];
class Program
{
public static IConfiguration StaticConfig { get; set; }
static void Main(string[] args)
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
});
builder.ConfigureAppConfiguration((hostContext, config) =>
{
var conf = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true).Build();
config.AddConfiguration(conf);
});
var host = builder.Build();
using (host)
{
host.Run();
}
}
}
public class Functions
{
IConfiguration configuration;
public Functions(IConfiguration _configuration)
{
configuration = _configuration;
}
[NoAutomaticTrigger]
public void DoTrigger(ILogger logger, [Queue("messagestarterqueue")] ICollector<string> outputQueueMessage)
{
var appKey = configuration["RingCentral_AppKey"];
}
}
我现在开始将我的web作业转换为.NETCore。但是,管理/检索这样的应用程序设置的“最佳实践”似乎是在每个web作业中的appsettings.json
文件中:
我在.Net Core应用程序中引用我的设置,如下所示:
var appKey = ConfigurationManager.AppSettings["RingCentral_AppKey"];
class Program
{
public static IConfiguration StaticConfig { get; set; }
static void Main(string[] args)
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
});
builder.ConfigureAppConfiguration((hostContext, config) =>
{
var conf = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true).Build();
config.AddConfiguration(conf);
});
var host = builder.Build();
using (host)
{
host.Run();
}
}
}
public class Functions
{
IConfiguration configuration;
public Functions(IConfiguration _configuration)
{
configuration = _configuration;
}
[NoAutomaticTrigger]
public void DoTrigger(ILogger logger, [Queue("messagestarterqueue")] ICollector<string> outputQueueMessage)
{
var appKey = configuration["RingCentral_AppKey"];
}
}
类程序
{
公共静态IConfiguration StaticConfig{get;set;}
静态void Main(字符串[]参数)
{
var builder=新主机生成器();
builder.ConfigureWebJobs(b=>
{
b、 AddAzureStorageCoreServices();
b、 AddAzureStorage();
});
builder.ConfigureAppConfiguration((主机上下文,配置)=>
{
var conf=new ConfigurationBuilder()
.AddJsonFile(“appsettings.json”,可选:false,reloadOnChange:true);
config.AddConfiguration(conf);
});
var host=builder.Build();
使用(主机)
{
host.Run();
}
}
}
公共类功能
{
i配置配置;
公共功能(IConfiguration\u配置)
{
配置=_配置;
}
[NoAutomaticTrigger]
public void DoTrigger(ILogger记录器,[Queue(“messagestarterqueue”)]ICollector outputQueueMessage)
{
var-appKey=configuration[“RingCentral_-appKey”];
}
}
这很好,但是我必须在每个单独的项目中有一个单独的
appsettings.config
文件,每个项目都重复相同的设置。有没有办法“集中”我的.Net核心web作业的这些设置?创建我的Azure web应用程序可以引用的“全局”appsettings.config文件?或者,每个.Net核心应用程序是否有某种方式可以引用传统.Net web作业当前使用的“旧式”应用程序设置?请允许我提出一些不同的方法。IMHO,你能做到这一点的最好方法是利用Azure应用程序配置服务。 (检查一下)
它允许您调用API来获取配置的值,同时您可以通过门户方便地管理它。实际上,您可以使用
环境.GetEnvironmentVariable(您的设置键)
来获取设置
在配置中设置设置后,它们将保存为环境变量,您可以将其签入
所以当然你可以得到它们GetEnvironmentVariable
,它将显示如下图
谢谢Alex,我会去看看。所以如果你不使用Azure,你的电脑会坏吗?我想我可能必须将设置移动到数据库中的一个表中。如果您想要集中配置,可以查看Azure应用程序配置。它将提供与您现在拥有的类似的体验,您可以将其与.NETCore一起使用