我正在尝试使用.NET Core项目配置Azure WebJob。每次我在Azure中执行作业时,都会告诉我错误:
确保您设置的连接字符串名为 Microsoft Azure网站配置中的AzureWebJobsDashboard通过 使用以下格式 DefaultEndpointsProtocol = https; AccountName = NAME; AccountKey = KEY 指向Microsoft Azure存储帐户,其中Microsoft 存储了Azure WebJobs运行时日志。
这是我在其中配置所有内容以及配置内容的代码:
private static void ConfigureServices(IServiceCollection serviceCollection)
{
// Optional: Setup your configuration:
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
// add any interfaces that will be needed here
serviceCollection.AddScoped<IBatchJobService, BatchJobService>();
// executes the job
serviceCollection.AddScoped<ExecuteBatchJobs, ExecuteBatchJobs>();
// One more thing - tell azure where your azure connection strings are
var connStringDashboard = configuration["ConnectionStrings:AzureWebJobsDashboard"];
var connStringStorage = configuration["ConnectionStrings:AzureWebJobsStorage"];
Environment.SetEnvironmentVariable("AzureWebJobsDashboard", connStringDashboard);
Environment.SetEnvironmentVariable("AzureWebJobsStorage", connStringStorage);
}
这是appsettings.json文件:
{
"ConnectionStrings": {
"AzureWebJobsDashboard": "DefaultEndpointsProtocol=https;AccountName=xxxxxxxxxxx;AccountKey=mykey;",
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=xxxxxxxxxxx;AccountKey=mykey;"
}
}
我在本地代码中的“ var connStringDashboard = ....”上设置了一个断点,它正确地从appsettings.json中读取值。
然后,它通过环境变量设置连接字符串。
是否有任何关于设置连接字符串出错的想法?似乎由于某种原因,Azure无法从环境变量中读取它们。
答案 0 :(得分:4)
您需要在Web应用程序Application Settings刀片服务器的门户中设置AzureWebJobsDashboard
连接字符串。 信息中心作为单独的网站扩展程序运行,并且无权访问appsettings.json
。
将连接字符串添加到“应用程序设置”边栏上的“ 连接字符串”部分。
您可以更改代码,以便将appsettings.json
文件和Azure Application Settings
中的连接字符串重命名为其他名称(例如WebJobsStorage
和WebJobsDashboard
),并那么它将起作用。
Environment.SetEnvironmentVariable("AzureWebJobsStorage", configuration.GetConnectionString("WebJobsStorage"));
Environment.SetEnvironmentVariable("AzureWebJobsDashboard", configuration.GetConnectionString("WebJobsDashboard"));
有关更多详细信息,您可以参考此issue。