私はAzure Webjobsを操作しようとしていますが、その仕組みは理解していますが、2つの接続文字列を使用する必要がある理由がわかりません。1つはメッセージを保持するキュー用ですが、
なぜ「AzureWebJobsDashboard」と呼ばれるものがあるのですか?
その目的は何ですか?
そして、私はこの接続文字列をどこから取得しますか?
現時点では、同じソリューションに1つのWebアプリと1つのWebジョブがあり、ローカルでのみ(何も公開せずに)実験しています。クラウドで立ち上がったのは、キューを保持するストレージアカウントです。
私は両方の場所(AzureWebJobsDashboard、AzureWebJobsStorage)に同じ接続文字列を配置しようとしていますが、その例外をスローします:「このトリガーを使用するときにパラメーター 'log'をバインドできません。」
ありがとうございました。
WebJobs SDKがストレージアカウントにいくつかのログを書き込むため、2つの接続文字列があります。データ(AzureWebJobsStorage
)専用のストレージアカウントとログ(AzureWebJobsDashboard
)専用のストレージアカウントを持つ可能性があります。それらは同じにすることができます。また、異なるデータアカウントを使用しているが同じログを同じダッシュボードに送信する複数のジョブホストを使用できるため、そのうち2つが必要です。
発生しているエラーは、接続文字列ではなく、コード内の関数の1つに関連しています。それらの1つに、正しいタイプではないlog
パラメーターがあります。コードを共有できますか?
さて、「ConnectionStringはどこから取得するのですか」という実際の答えを探してここに来る人は誰でも...ここに行きます。
新しいAzureポータルには、ストレージアカウントリソースが必要です。私の名前は "portalvhds"で始まり、その後に一連の英数字が続きます。それをクリックすると、右側にリソースダッシュボードが表示され、すぐに[設定]ウィンドウが表示されます。 Generalの下にあるKeysサブメニューを探します-それをクリックします。接続文字列全体があります(実際には、プライマリとセカンダリの2つがあります。現時点では違いがわかりませんが、プライマリから始めましょうか?)。
これをコピーして、AzureWebJobsDashboardアイテムとAzureWebJobsStorageアイテムのconnectionString属性のApp.configファイルに貼り付けます。これは、ご使用の環境でストレージアカウントが1つしかないことを前提としているため、同じストレージをデータとログに使用する必要があります。
私はこれを試しましたが、少なくともWebJobはエラーをスローすることなく実行されました。
@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();
}
}
}