web-dev-qa-db-fra.com

Configuration des chaînes de connexion Azure WebJobs (AzureWebJobsDashboard ??)

J'essaie de travailler avec Azure Webjobs. Je comprends son fonctionnement, mais je ne comprends pas pourquoi je dois utiliser deux chaînes de connexion. L'une correspond à la file d'attente pour la conservation des messages, mais 

  1. pourquoi il en existe un autre appelé "AzureWebJobsDashboard"?

  2. Quel est son but?

  3. Et d'où provient cette chaîne de connexion? 

À l'heure actuelle, j'ai une application Web et un travail Web dans la même solution. Je ne teste que localement (sans rien publier). La seule chose que je me suis retrouvée dans le cloud est le compte de stockage qui contient la file d'attente.

J'ai même essayé de mettre la même chaîne de connexion aux deux endroits (AzureWebJobsDashboard, AzureWebJobsStorage) mais son exception est: "Impossible de lier le paramètre 'log' avec ce déclencheur."

Je vous remercie.

17
Ron

Il existe deux chaînes de connexion car le kit de développement WebJobs Web écrit certains journaux dans le compte de stockage. Cela vous donne la possibilité d'avoir un compte de stockage uniquement pour les données (AzureWebJobsStorage) et l'autre pour les journaux (AzureWebJobsDashboard). Ils peuvent être les mêmes. En outre, vous en avez besoin de deux, car plusieurs hôtes de travail peuvent utiliser plusieurs comptes de données mais envoyer des journaux au même tableau de bord.

L'erreur que vous obtenez n'est pas liée aux chaînes de connexion, mais à l'une des fonctions de votre code. L'un d'eux a un paramètre log qui n'est pas du bon type. Pouvez-vous partager le code?

18
Victor Hurdugaci

D'accord, tous ceux qui viennent ici cherchent une réponse à "Où puis-je obtenir la ConnectionString" ... voilà.

Sur le nouveau portail Azure, vous devez avoir une ressource de compte de stockage. le mien commence par "portalvhds" suivi d'un groupe d'alphanumériques. Cliquez dessus pour afficher un tableau de bord des ressources à droite, suivi immédiatement d'une fenêtre Paramètres. Recherchez le sous-menu Keys sous General - cliquez dessus. Toute la chaîne de connexion est là (en fait, il y en a deux, primaire et secondaire; je ne comprends pas actuellement la différence, mais allons-y avec primaire, doit-on?).

Copiez et collez-le dans votre fichier App.config sur l'attribut connectionString des éléments AzureWebJobsDashboard et AzureWebJobsStorage. Cela suppose que, dans votre environnement, vous ne possédez qu'un seul compte de stockage. Par conséquent, vous souhaitez que ce même stockage soit utilisé pour les données et les journaux.

J'ai essayé cela, et au moins WebJob a fonctionné sans générer d'erreur.

14
RayHAz

@RayHAz - Développer votre réponse ci-dessus (merci) ... 

J'ai essayé ceci https://docs.Microsoft.com/en-us/Azure/app-service/webjobs-sdk-get-started

mais dans .Net Core 2.1, il y avait des exceptions sur la façon dont il ne pouvait pas trouver la chaîne de connexion. 

Longue histoire courte, je me suis retrouvé avec ce qui suit, qui a fonctionné pour moi:

appsettings.json, dans une application de console .Net Core 2.1:

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

... et mon fichier 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