Azure WebJobs 连接字符串配置(AzureWebJobsDashboard??)

Azure WebJobs Connection Strings configuration ( AzureWebJobsDashboard?? )

我正在尝试使用 Azure Webjobs,我了解它的工作方式,但我不明白为什么我需要使用两个连接字符串,一个用于保存消息的队列,但

  1. 为什么还有一个叫"AzureWebJobsDashboard"?

  2. 它的用途是什么?

  3. 我从哪里得到这个连接字符串?

目前我在同一个解决方案中有一个 Web 应用程序和一个 Webjob,我只是在本地进行实验(没有发布任何内容),我在云中得到的一件事是保存队列的存储帐户.

我什至尝试在两个地方(AzureWebJobsDashboard、AzureWebJobsStorage)放置相同的连接字符串,但它抛出异常: "Cannot bind parameter 'log' when using this trigger."

谢谢。

有两个连接字符串,因为WebJobs SDK 在存储帐户中写入了一些日志。它使您可以拥有一个仅用于数据的存储帐户 (AzureWebJobsStorage) 和另一个用于日志的存储帐户 (AzureWebJobsDashboard)。它们可以相同。此外,您需要其中两个,因为您可以有多个作业主机使用不同的数据帐户但将日志发送到同一个仪表板。

您遇到的错误与连接字符串无关,而是与代码中的一个函数有关。其中之一的 log 参数类型不正确。可以分享代码吗?

好的,任何来这里寻找 "where do I get the ConnectionString from" 的实际答案的人......给你。

在新的 Azure 门户上,您应该有一个存储帐户资源;我的以 "portalvhds" 开头,后跟一堆字母数字。单击该按钮可在右侧看到资源仪表板,紧接着是设置 window。在“常规”下查找“键”子菜单——单击它。整个连接字符串都在那里(实际上有两个,Primary 和 Secondary;我目前不明白其中的区别,但让我们使用 Primary,好吗?)。

复制并粘贴 App.config 文件中 AzureWebJobsDashboard 和 AzureWebJobsStorage 项的 connectionString 属性。这假定您的环境只有一个存储帐户,因此您希望同一存储用于数据和日志。

我试过了,至少 WebJob 运行 没有抛出错误。

@RayHAz - 扩展您的上述答案(谢谢)...

我试过了https://docs.microsoft.com/en-us/azure/app-service/webjobs-sdk-get-started

但在 .Net Core 2.1 中,出现有关如何找不到连接字符串的异常。

长话短说,我最终得到了以下对我有用的东西:

appsettings.json,在 .Net Core 2.1 控制台应用程序中:

{
  "ConnectionStrings": {
  "AzureWebJobsStorage": "---your Azure storage connection string here---",
  "AzureWebJobsDashboard":"---the same connectionstring---"
  }
}

...和我的 Program.cs 文件...

using System;
using System.IO;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace YourWebJobConsoleAppProjectNamespaceHere
{
    public class Program
    {
        public static IConfiguration Configuration;
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(Path.Combine(AppContext.BaseDirectory))
                .AddJsonFile("appsettings.json", true);
            Configuration = builder.Build();

            var azureWebJobsStorageConnectionString = Configuration.GetConnectionString("AzureWebJobsStorage");
            var azureWebJobsDashboardConnectionString = Configuration.GetConnectionString("AzureWebJobsDashboard");

            var config = new JobHostConfiguration
            {
                DashboardConnectionString = azureWebJobsDashboardConnectionString,
                StorageConnectionString = azureWebJobsStorageConnectionString
            };

            var loggerFactory = new LoggerFactory();
            config.LoggerFactory = loggerFactory.AddConsole();

            var host = new JobHost(config);
            host.RunAndBlock();
        }
    }
}