Azure App Service中的.NET Core WebJob配置

时间:2018-03-13 12:47:04

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

我已经将Web作业编写为.NET Core Console应用程序(exe),它有appsettings.json。

如何在Azure中配置WebJob?基本上我想与Web应用程序共享一些设置,例如连接字符串,这是通过App Service的应用程序设置配置的。

3 个答案:

答案 0 :(得分:1)

从ASP.NET Core获取这些设置的方法是访问注入的环境变量。

因此我们必须将这些环境变量加载到Startup.cs文件中的Configuration中:

public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

appsettings.json文件的一个例子是:

enter image description here

如果您想获取appsettings.json文件中定义的名为“Redis”的连接字符串,我们可以通过配置获取它:

Configuration["ConnectionStrings:Redis"]

您可以在Azure应用程序的webapp中设置此配置:

enter image description here

此外,我们可以使用Configuration.GetConnectionString("Redis")从appsettings.json文件中获取开发连接字符串,并在Azure中部署并运行应用程序时,覆盖它在Web App的“连接字符串”面板中设置另一个字符串。

有关详细信息,请参阅此article

答案 1 :(得分:1)

我更喜欢通过在我的本地项目中设置launchSettings.json中的环境变量并在Azure App Service设置中设置相同的环境变量来实现此目的。

优点是您的应用程序始终使用环境变量,更重要的是,您的源代码管理中没有任何密钥,因为您不必部署launchSettings.json

答案 2 :(得分:0)

CloudConfigurationManager类非常适合这种情况,因为它将从中读取配置设置 所有环境(Web作业配置和基本应用程序配置)。

Install-Package Microsoft.WindowsAzure.ConfigurationManager

然后像这样使用它

var val = CloudConfigurationManager.GetSetting("your_appsetting_key");

唯一的缺点是只能从appSettings部分读取而不能使用CloudConfigurationManager读取connectionstring部分。 如果您想在Web作业和基本Web应用程序之间共享连接,那么我将使用唯一键在Web应用程序的appsetting部分中定义connectionstring。