【问题标题】:Can I centralize my app settings in multiple .net core web jobs in Azure?我可以将我的应用设置集中在 Azure 中的多个 .net 核心 Web 作业中吗?
【发布时间】:2019-08-31 17:20:27
【问题描述】:

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

我在我的传统 .Net 应用程序中引用这些设置,如下所示:

var appKey = ConfigurationManager.AppSettings["RingCentral_AppKey"];

我现在开始将我的网络作业转换为 .Net Core。但是,管理/检索此类应用设置的“最佳实践”似乎是在每个 Web 作业中的 appsettings.json 文件中:

我在我的 .Net Core 应用程序中引用我的设置,如下所示:

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"];
    }
}

这一切都很好,但我必须在每个单独的项目中有一个单独的 appsettings.config 文件,每个项目都重复相同的设置。有没有办法为我的 .Net Core 网络作业“集中”这些设置?要么创建我的 Azure Web 应用程序可以引用的“全局”appsettings.config 文件吗?或者,每个 .Net Core 应用程序是否可以通过某种方式引用传统 .Net Web 作业当前使用的“旧式”应用程序设置?

【问题讨论】:

标签: azure asp.net-core configuration asp.net-core-2.0 azure-webjobs


【解决方案1】:

请允许我提出一些不同的方法。
恕我直言,最好的方法是利用 Azure 应用程序配置服务。 (查看GitHub

它将允许您调用 API 来获取配置的值,同时您可以通过门户方便地对其进行管理。

【讨论】:

  • 谢谢 Alex,我去看看。
  • 如果你不使用 Azure,你搞砸了?我想我可能必须将设置移动到数据库中的表中。
【解决方案2】:

其实你可以使用Environment.GetEnvironmentVariable(your settings key) 来获取设置。

在Configuration中设置好设置后,它们会被保存为环境变量,你可以在https://yousitename.scm.azurewebsites.net/Env.cshtml查看。

所以你当然可以得到他们GetEnvironmentVariable,它会显示如下图。

【讨论】:

    猜你喜欢
    • 2020-06-15
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2014-11-02
    • 1970-01-01
    • 2021-10-19
    • 2021-05-28
    相关资源
    最近更新 更多