Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在Azure中的多个.net核心web作业中集中应用程序设置吗?_Azure_Asp.net Core_Configuration_Asp.net Core 2.0_Azure Webjobs - Fatal编程技术网

我可以在Azure中的多个.net核心web作业中集中应用程序设置吗?

我可以在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

我有一个Azure web应用程序,在后端有几个web作业。到目前为止,我一直在使用传统的.Net创建这些web作业。这些web作业的一个核心方面是,它们都可以访问Azure门户中定义的全局配置属性,如下所示:

我在传统的.Net应用程序中引用了以下设置:

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一起使用