首页 文章

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

提问于
浏览
17

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

  • 为什么还有一个名为“AzureWebJobsDashboard”?

  • 它的目的是什么?

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

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

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

谢谢 .

3 回答

  • 18

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

    您获得的错误与连接字符串无关,而与代码中的某个函数无关 . 其中一个参数的 log 参数类型不正确 . 你能分享一下代码吗?

  • 0

    好的,有人来这里寻找“我从哪里获得ConnectionString”的实际答案......在这里,你走了 .

    在新的Azure门户上,您应该拥有存储帐户资源;我的开头是“portalvhds”,然后是一堆字母数字 . 单击它以查看右侧的资源仪表板,然后立即显示“设置”窗口 . 在General下查找Keys子菜单 - 单击该子菜单 . 整个连接字符串在那里(实际上有两个,主要和次要;我目前不了解其中的区别,但是让我们选择Primary,不管吗?) .

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

    我试过这个,至少WebJob运行时没有抛出错误 .

  • 14

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

相关问题