web-dev-qa-db-ja.com

Azure WebJobs接続文字列の構成(AzureWebJobsDashboard ??)

私はAzure Webjobsを操作しようとしていますが、その仕組みは理解していますが、2つの接続文字列を使用する必要がある理由がわかりません。1つはメッセージを保持するキュー用ですが、

  1. なぜ「AzureWebJobsDashboard」と呼ばれるものがあるのですか?

  2. その目的は何ですか?

  3. そして、私はこの接続文字列をどこから取得しますか?

現時点では、同じソリューションに1つのWebアプリと1つのWebジョブがあり、ローカルでのみ(何も公開せずに)実験しています。クラウドで立ち上がったのは、キューを保持するストレージアカウントです。

私は両方の場所(AzureWebJobsDashboard、AzureWebJobsStorage)に同じ接続文字列を配置しようとしていますが、その例外をスローします:「このトリガーを使用するときにパラメーター 'log'をバインドできません。」

ありがとうございました。

17
Ron

WebJobs SDKがストレージアカウントにいくつかのログを書き込むため、2つの接続文字列があります。データ(AzureWebJobsStorage)専用のストレージアカウントとログ(AzureWebJobsDashboard)専用のストレージアカウントを持つ可能性があります。それらは同じにすることができます。また、異なるデータアカウントを使用しているが同じログを同じダッシュボードに送信する複数のジョブホストを使用できるため、そのうち2つが必要です。

発生しているエラーは、接続文字列ではなく、コード内の関数の1つに関連しています。それらの1つに、正しいタイプではないlogパラメーターがあります。コードを共有できますか?

18

さて、「ConnectionStringはどこから取得するのですか」という実際の答えを探してここに来る人は誰でも...ここに行きます。

新しいAzureポータルには、ストレージアカウントリソースが必要です。私の名前は "portalvhds"で始まり、その後に一連の英数字が続きます。それをクリックすると、右側にリソースダッシュボードが表示され、すぐに[設定]ウィンドウが表示されます。 Generalの下にあるKeysサブメニューを探します-それをクリックします。接続文字列全体があります(実際には、プライマリとセカンダリの2つがあります。現時点では違いがわかりませんが、プライマリから始めましょうか?)。

これをコピーして、AzureWebJobsDashboardアイテムとAzureWebJobsStorageアイテムのconnectionString属性のApp.configファイルに貼り付けます。これは、ご使用の環境でストレージアカウントが1つしかないことを前提としているため、同じストレージをデータとログに使用する必要があります。

私はこれを試しましたが、少なくともWebJobはエラーをスローすることなく実行されました。

14
RayHAz

@RayHAz-上記の答えを拡張してください(ありがとう)...

私はこれを試しました https://docs.Microsoft.com/en-us/Azure/app-service/webjobs-sdk-get-started

しかし、.Net Core 2.1では、接続文字列が見つからなかったという例外が発生していました。

要するに、私は次のようになりました。

.Net Core 2.1コンソールアプリのappsettings.json:

{
  "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();
        }
    }
}
0
David Barrows