【问题标题】:Azure WebJobs Connection Strings configuration ( AzureWebJobsDashboard?? )Azure WebJobs 连接字符串配置 (AzureWebJobsDashboard??)
【发布时间】:2015-04-03 03:12:10
【问题描述】:

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

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

  2. 它的目的是什么?

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

目前我在同一个解决方案中有一个 Web App 和一个 Webjob,我只在本地进行实验(没有发布任何内容),我在云端启动的一件事是保存队列的存储帐户。

我什至尝试在两个地方(AzureWebJobsDashboard、AzureWebJobsStorage)都放置相同的连接字符串,但它会抛出异常: “使用此触发器时无法绑定参数'log'。”

谢谢。

【问题讨论】:

  • 可以在没有 azure 存储帐户的情况下在本地调试 Azure webjobs 吗?
  • @ManirajSS 在解决方案资源管理器中 -> 右键单击​​ WebJob 项目并选择调试 -> 启动新实例。让我知道它是否适合您。
  • 我可以通过单击set as startup project 并运行来调试网络作业。但是我的连接字符串有问题。我没有存储帐户,也找不到如何为 webjobs 配置 localdb。
  • @ManirajSS 连接字符串需要是Storage Account的连接字符串。您不需要数据库,您需要存储帐户。我不知道你是否可以在本地设置存储帐户,搜索它。如果您需要其他任何东西..我在这里:)

标签: azure azure-webjobs azure-webjobssdk


【解决方案1】:

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

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

【讨论】:

  • 感谢 Victor 的解释,关于我修复的异常......这是一个小错字。但是维克多,我从日志中得到了什么好处?为什么要把它们放在特殊的存储帐户中?
  • 有时您不想使用仅对仪表板有用的日志来污染数据帐户。但是,就像我之前提到的,仪表板和数据帐户可以是同一个存储帐户
【解决方案2】:

好的,任何来这里寻找“我从哪里得到 ConnectionString”的实际答案的人......你去吧。

在新的 Azure 门户上,您应该有一个存储帐户资源;我的以“portalvhds”开头,后跟一堆字母数字。单击该按钮以查看右侧的资源仪表板,然后立即显示“设置”窗口。在 General 下寻找 Keys 子菜单——点击它。整个连接字符串都在那里(实际上有两个,Primary 和 Secondary;我目前不明白区别,但让我们使用 Primary,好吗?)。

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

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

【讨论】:

    【解决方案3】:

    @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();
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-04
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 2021-04-12
      相关资源
      最近更新 更多