Samouczek: rozpoczynanie pracy z zestawem SDK usługi Azure WebJobs na potrzeby przetwarzania w tle opartego na zdarzeniach

Rozpocznij pracę z zestawem SDK usługi Azure WebJobs dla Azure App Service, aby umożliwić aplikacjom internetowym uruchamianie zadań w tle, zaplanowanych zadań i reagowanie na zdarzenia.

Użyj programu Visual Studio 2022, aby utworzyć aplikację konsolową platformy .NET Core, która używa zestawu SDK usługi WebJobs do odpowiadania na komunikaty kolejki usługi Azure Storage, uruchamiać projekt lokalnie i wdrażać go na platformie Azure.

Niniejszy samouczek zawiera informacje na temat wykonywania następujących czynności:

  • tworzenie aplikacji konsoli
  • Dodawanie funkcji
  • Testowanie lokalne
  • Wdróż na platformie Azure
  • Włączanie rejestrowania usługi Application Insights
  • Dodawanie powiązań wejściowych/wyjściowych

Wymagania wstępne

tworzenie aplikacji konsoli

W tej sekcji rozpoczniesz od utworzenia projektu w programie Visual Studio 2022. Następnie dodasz narzędzia do tworzenia, publikowania kodu i funkcji platformy Azure, które nasłuchują wyzwalaczy i funkcji wywoływania. Na koniec skonfigurujesz rejestrowanie konsoli, które wyłącza starsze narzędzie do monitorowania i włącza dostawcę konsoli z domyślnym filtrowaniem.

Uwaga

Procedury opisane w tym artykule zostały zweryfikowane pod kątem tworzenia aplikacji konsolowej platformy .NET Core działającej na platformie .NET 6.0.

Tworzenie projektu

  1. W programie Visual Studio wybierz pozycję Plik>nowy>projekt.

  2. W obszarze Utwórz nowy projekt wybierz pozycję Aplikacja konsolowa (C#), a następnie wybierz przycisk Dalej.

  3. W obszarze Konfigurowanie nowego projektu nadaj projektowi nazwę WebJobsSDKSample, a następnie wybierz pozycję Dalej.

  4. Wybierz strukturę docelową i wybierz pozycję Utwórz. Ten samouczek został zweryfikowany przy użyciu platformy .NET 6.0.

Instalowanie pakietów NuGet zadań WebJob

Zainstaluj najnowszy pakiet NuGet zadań WebJobs. Ten pakiet zawiera zadania Microsoft.Azure.WebJobs (WebJobs SDK), które umożliwiają publikowanie kodu funkcji w zadaniach WebJob w Azure App Service.

  1. Pobierz najnowszą stabilną wersję 4.x pakietu NuGet Microsoft.Azure.WebJobs.Extensions.

  2. W programie Visual Studio przejdź do pozycji Narzędzia>Menedżer pakietów NuGet.

  3. Wybierz pozycję Konsola menedżera pakietów. Zostanie wyświetlona lista poleceń cmdlet NuGet, link do dokumentacji i PM> punkt wejścia.

  4. W poniższym poleceniu zastąp <4_X_VERSION> ciąg bieżącym numerem wersji znalezionym w kroku 1.

    Install-Package Microsoft.Azure.WebJobs.Extensions -version <4_X_VERSION>
    
  5. W konsoli menedżera pakietów wykonaj polecenie . Zostanie wyświetlona lista rozszerzeń i zostanie automatycznie zainstalowana.

Tworzenie hosta

Host jest kontenerem środowiska uruchomieniowego dla funkcji, które nasłuchują wyzwalaczy i wywołuje funkcje. Poniższe kroki umożliwiają utworzenie hosta, który implementuje IHosthosta , który jest hostem ogólnym w ASP.NET Core.

  1. Wybierz kartę Program.cs , usuń istniejącą zawartość i dodaj następujące using instrukcje:

    using System.Threading.Tasks;
    using Microsoft.Extensions.Hosting;
    
  2. Ponadto w obszarze Program.cs dodaj następujący kod:

    namespace WebJobsSDKSample
    {
        class Program
        {
            static async Task Main()
            {
                var builder = new HostBuilder();
                builder.ConfigureWebJobs(b =>
                {
                    b.AddAzureStorageCoreServices();
                });
                var host = builder.Build();
                using (host)
                {
                    await host.RunAsync();
                }
            }
        }
    }
    

W ASP.NET Core konfiguracje hostów są ustawiane przez wywoływanie metod w wystąpieniuHostBuilder. Aby uzyskać więcej informacji, zobacz Host ogólny platformy .NET. Metoda ConfigureWebJobs rozszerzenia inicjuje hosta zadań WebJob. W ConfigureWebJobspliku zainicjuj określone rozszerzenia powiązań, takie jak rozszerzenie powiązania magazynu i ustaw właściwości tych rozszerzeń.

Włączanie rejestrowania konsoli

Skonfiguruj rejestrowanie konsoli korzystające z platformy rejestrowania ASP.NET Core. Ta struktura, Microsoft.Extensions.Logging, zawiera interfejs API, który współpracuje z różnymi wbudowanymi i zewnętrznymi dostawcami rejestrowania.

  1. Pobierz najnowszą stabilną wersję Microsoft.Extensions.Logging.Console pakietu NuGet, która zawiera Microsoft.Extensions.Loggingelement .

  2. W poniższym poleceniu zastąp <6_X_VERSION> ciąg bieżącym numerem wersji znalezionym w kroku 1. Każdy typ pakietu NuGet ma unikatowy numer wersji.

    Install-Package Microsoft.Extensions.Logging.Console -version <6_X_VERSION>
    
  3. W konsoli menedżera pakietów wypełnij bieżący numer wersji i wykonaj polecenie . Zostanie wyświetlona lista rozszerzeń i zostanie automatycznie zainstalowana.

  4. Na karcie Program.cs dodaj następującą using instrukcję:

    using Microsoft.Extensions.Logging;
    
  5. Kontynuuj w pliku Program.cs, dodaj metodę ConfigureLogging do HostBuilderpliku przed poleceniem Build . Metoda AddConsole dodaje rejestrowanie konsoli do konfiguracji.

    builder.ConfigureLogging((context, b) =>
    {
        b.AddConsole();
    });
    

    Metoda Main wygląda teraz następująco:

    static async Task Main()
    {
        var builder = new HostBuilder();
        builder.ConfigureWebJobs(b =>
                {
                    b.AddAzureStorageCoreServices();
                });
        builder.ConfigureLogging((context, b) =>
                {
                    b.AddConsole();
                });
        var host = builder.Build();
        using (host)
        {
            await host.RunAsync();
        }
    }
    

    Ten dodatek wprowadza następujące zmiany:

Teraz możesz dodać funkcję wyzwalaną przez komunikaty przychodzące do kolejki usługi Azure Storage.

Dodawanie funkcji

Funkcja jest jednostką kodu uruchamianego zgodnie z harmonogramem, jest wyzwalana na podstawie zdarzeń lub jest uruchamiana na żądanie. Wyzwalacz nasłuchuje zdarzenia usługi. W kontekście zestawu SDK zadań WebJob wyzwalane nie odwołuje się do trybu wdrażania. Zaplanowane lub oparte na zdarzeniach zadania WebJob utworzone przy użyciu zestawu SDK powinny być zawsze wdrażane jako ciągłe zadania WebJob z włączoną funkcją "Zawsze włączone".

W tej sekcji utworzysz funkcję wyzwalaną przez komunikaty w kolejce usługi Azure Storage. Najpierw należy dodać rozszerzenie powiązania, aby nawiązać połączenie z usługą Azure Storage.

Instalowanie rozszerzenia powiązania usługi Storage

Począwszy od wersji 3 zestawu SDK usługi WebJobs, aby nawiązać połączenie z usługami Azure Storage, musisz zainstalować oddzielny pakiet rozszerzenia powiązania usługi Storage.

Uwaga

Począwszy od wersji 5.x, usługa Microsoft.Azure.WebJobs.Extensions.Storage została podzielona przez usługę magazynu i zmigrowała metodę AddAzureStorage() rozszerzenia według typu usługi.

  1. Pobierz najnowszą stabilną wersję pakietu NuGet Microsoft.Azure.WebJobs.Extensions.Storage w wersji 5.x.

  2. W poniższym poleceniu zastąp <5_X_VERSION> ciąg bieżącym numerem wersji znalezionym w kroku 1. Każdy typ pakietu NuGet ma unikatowy numer wersji.

    Install-Package Microsoft.Azure.WebJobs.Extensions.Storage -Version <5_X_VERSION>
    
  3. W konsoli menedżera pakietów wykonaj polecenie z bieżącym numerem wersji w punkcie PM> wejścia.

  4. Kontynuując w pliku Program.cs, w ConfigureWebJobs metodzie rozszerzenia dodaj metodę AddAzureStorageQueues w wystąpieniu HostBuilder (przed poleceniem Build ), aby zainicjować rozszerzenie magazynu. W tym momencie ConfigureWebJobs metoda wygląda następująco:

    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddAzureStorageQueues();
    });
    
  5. Dodaj następujący kod w metodzie po utworzeniu Mainbuilder wystąpienia:

    builder.UseEnvironment(EnvironmentName.Development);
    

    Uruchamianie w trybie programowania zmniejsza wycofywanie wykładniczego sondowania kolejek , które może znacznie opóźnić czas potrzebny na znalezienie komunikatu i wywołanie funkcji przez środowisko uruchomieniowe. Ten wiersz kodu należy usunąć lub przełączyć się na Production po zakończeniu programowania i testowania.

    Metoda Main powinna teraz wyglądać podobnie do następującego przykładu:

    static async Task Main()
    {
        var builder = new HostBuilder();
        builder.UseEnvironment(EnvironmentName.Development);
        builder.ConfigureLogging((context, b) =>
        {
            b.AddConsole();
        });
        builder.ConfigureWebJobs(b =>
        {
            b.AddAzureStorageCoreServices();
            b.AddAzureStorageQueues();
        });
        var host = builder.Build();
        using (host)
        {
            await host.RunAsync();
        }
    }
    

Tworzenie funkcji wyzwalanej przez kolejkę

Atrybut QueueTrigger informuje środowisko uruchomieniowe o wywołaniu tej funkcji, gdy nowy komunikat jest zapisywany w kolejce usługi Azure Storage o nazwie queue. Zawartość komunikatu kolejki jest dostarczana do kodu metody w parametrze message . Treść metody to miejsce przetwarzania danych wyzwalacza. W tym przykładzie kod po prostu rejestruje komunikat.

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt, wybierz polecenie Dodaj>nowy element, a następnie wybierz pozycję Klasa.

  2. Nazwij nowy plik klasy C# Functions.cs i wybierz pozycję Dodaj.

  3. W pliku Functions.cs zastąp wygenerowany szablon następującym kodem:

    using Microsoft.Azure.WebJobs;
    using Microsoft.Extensions.Logging;
    
    namespace WebJobsSDKSample
    {
        public class Functions
        {
            public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger logger)
            {
                logger.LogInformation(message);
            }
        }
    }
    

    Należy oznaczyć klasę Functions jako public static , aby środowisko uruchomieniowe uzyskiwało dostęp do metody i wykonało tę metodę. W powyższym przykładzie kodu po dodaniu komunikatu do kolejki o nazwie queuefunkcja jest wykonywana, a message ciąg jest zapisywany w dziennikach. Monitorowana kolejka znajduje się w domyślnym koncie usługi Azure Storage, które zostanie utworzone w następnej kolejności.

Parametr message nie musi być ciągiem. Można również powiązać z obiektem JSON, tablicą bajtów lub obiektem CloudQueueMessage . Zobacz Użycie wyzwalacza kolejki. Każdy typ powiązania (taki jak kolejki, obiekty blob lub tabele) ma inny zestaw typów parametrów, z którymi można powiązać.

Tworzenie konta usługi Azure Storage

Emulator usługi Azure Storage, który działa lokalnie, nie ma wszystkich funkcji, których potrzebuje zestaw SDK usługi WebJobs. Utworzysz konto magazynu na platformie Azure i skonfigurujesz go do użycia.

Aby dowiedzieć się, jak utworzyć konto magazynu ogólnego przeznaczenia w wersji 2, zobacz Tworzenie konta usługi Azure Storage.

Lokalizowanie i kopiowanie parametrów połączenia

Parametry połączenia są wymagane do skonfigurowania magazynu. Zachowaj te parametry połączenia, aby wykonać następne kroki.

  1. W Azure Portal przejdź do konta magazynu i wybierz pozycję Ustawienia.

  2. W obszarze Ustawienia wybierz pozycję Klucze dostępu.

  3. W obszarze Parametry połączenia w obszarze key1 wybierz ikonę Kopiuj do schowka .

    Klucz

Konfigurowanie magazynu do uruchamiania lokalnie

Zestaw SDK usługi WebJobs szuka parametrów połączenia magazynu w obszarze Ustawienia aplikacji na platformie Azure. Po uruchomieniu lokalnie szuka tej wartości w lokalnym pliku konfiguracji lub zmiennych środowiskowych.

  1. Kliknij prawym przyciskiem myszy projekt, wybierz pozycję Dodaj>nowy element, wybierz pozycję Plik konfiguracji javaScript JSON, nadaj nowej nazwie plik appsettings.json , a następnie wybierz pozycję Dodaj.

  2. W nowym pliku dodaj AzureWebJobsStorage pole, jak w poniższym przykładzie:

    {
        "AzureWebJobsStorage": "{storage connection string}"
    }
    
  3. Zastąp ciąg {storage connection string} parametrami połączenia skopiowanymi wcześniej.

  4. Wybierz plik appsettings.json w Eksplorator rozwiązań i w oknie Właściwości ustaw akcję Kopiuj do katalogu wyjściowego, aby skopiować, jeśli nowsze.

Ponieważ ten plik zawiera wpis tajny parametrów połączenia, nie należy przechowywać pliku w zdalnym repozytorium kodu. Po opublikowaniu projektu na platformie Azure możesz dodać to samo ustawienie aplikacji parametrów połączenia w aplikacji w Azure App Service.

Testowanie lokalnie

Skompiluj i uruchom projekt lokalnie i utwórz kolejkę komunikatów, aby wyzwolić funkcję.

  1. W Azure Portal przejdź do konta magazynu i wybierz kartę Kolejki (1). Wybierz pozycję + Kolejka (2) i wprowadź ciąg queue jako nazwę kolejki (3). Następnie wybierz przycisk OK (4).

    Na tym obrazie pokazano, jak utworzyć nową kolejkę usługi Azure Storage.

  2. Kliknij nową kolejkę i wybierz pozycję Dodaj komunikat.

  3. W oknie dialogowym Dodawanie komunikatu wprowadź Hello world! jako tekst wiadomości, a następnie wybierz przycisk OK. W kolejce jest teraz komunikat.

    Tworzenie kolejki

  4. Naciśnij klawisze Ctrl+F5 , aby uruchomić projekt.

    Konsola pokazuje, że środowisko uruchomieniowe znalazło funkcję. Ponieważ użyto atrybutu QueueTriggerProcessQueueMessage w funkcji, środowisko uruchomieniowe webJobs nasłuchuje komunikatów w kolejce o nazwie queue. Po znalezieniu nowego komunikatu w tej kolejce środowisko uruchomieniowe wywołuje funkcję, przekazując wartość ciągu komunikatu.

  5. Wstecz do okna Kolejka i odśwież go. Komunikat zniknął, ponieważ został przetworzony przez funkcję działającą lokalnie.

  6. Zamknij okno konsoli.

Nadszedł czas na opublikowanie projektu zestawu SDK usługi WebJobs na platformie Azure.

Wdróż na platformie Azure

Podczas wdrażania utworzysz wystąpienie usługi App Service, w którym będą uruchamiane funkcje. Po opublikowaniu aplikacji konsolowej platformy .NET w celu App Service na platformie Azure jest ona automatycznie uruchamiana jako usługa WebJob. Aby dowiedzieć się więcej na temat publikowania, zobacz Tworzenie i wdrażanie zadań WebJob przy użyciu programu Visual Studio.

Tworzenie zasobów platformy Azure

  1. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.

  2. W oknie dialogowym Publikowanie wybierz pozycję Azure dla pozycji Cel, a następnie wybierz pozycję Dalej.

  3. Wybierz pozycję Azure WebJobs dla określonego elementu docelowego, a następnie wybierz pozycję Dalej.

  4. Powyżej App Service wystąpienia wybierz przycisk plus (+), aby utworzyć nowy obiekt WebJob platformy Azure.

  5. W oknie dialogowym App Service (Windows) użyj ustawień hostingu w poniższej tabeli.

    Ustawienie Sugerowana wartość Opis
    Nazwa Nazwa unikatowa w skali globalnej Unikatowa nazwa identyfikująca nową aplikację funkcji.
    Subskrypcja Wybierz subskrypcję Subskrypcja platformy Azure, która ma być używana.
    Grupa zasobów myResourceGroup Nazwa grupy zasobów, w której ma zostać utworzona aplikacja funkcji. Wybierz pozycję Nowa, aby utworzyć nową grupę zasobów.
    Plan hostingu Plan usługi App Service Plan usługi App Service określa lokalizację, rozmiar i funkcje farmy serwerów sieci Web, która jest hostem aplikacji. Hostując wiele aplikacji, można zmniejszyć koszty przez skonfigurowanie aplikacji internetowych do korzystania z jednego planu usługi App Service. plany App Service definiują region, rozmiar wystąpienia, liczbę skalowania i jednostkę SKU (Bezpłatna, Współdzielona, Podstawowa, Standardowa lub Premium). Wybierz pozycję Nowy, aby utworzyć nowy plan App Service. Warstwy Bezpłatna i Podstawowa nie obsługują opcji Zawsze włączone, aby zachować ciągłość działania witryny.

    Okno dialogowe Create App Service (Tworzenie usługi App Service)

  6. Wybierz pozycję Utwórz, aby utworzyć zadania WebJob i powiązane zasoby na platformie Azure przy użyciu tych ustawień i wdrożyć kod projektu.

  7. Wybierz pozycję Zakończ , aby powrócić do strony Publikowanie .

Włączanie rozwiązania Zawsze włączone

W przypadku ciągłego zadania WebJob należy włączyć ustawienie Zawsze włączone w witrynie, aby zadania WebJob działały poprawnie. Jeśli nie włączysz funkcji Always on, środowisko uruchomieniowe będzie bezczynne po kilku minutach braku aktywności.

  1. Na stronie Publikowanie wybierz trzy kropki powyżej hostingu, aby wyświetlić akcje sekcji Profil hostingu, a następnie wybierz pozycję Otwórz w Azure Portal.

  2. W obszarze Ustawienia wybierz pozycjęUstawienia ogólnekonfiguracji>, ustaw opcję Zawsze włączone, a następnie wybierz pozycję Zapisz i kontynuuj, aby ponownie uruchomić witrynę.

Publikowanie projektu

Po utworzeniu aplikacji internetowej na platformie Azure nadszedł czas na opublikowanie projektu zadań WebJobs.

  1. Na stronie Publikowanie w obszarze Hosting wybierz przycisk edycji i zmień typ zadania WebJob na Continuous , a następnie wybierz pozycję Zapisz. Dzięki temu usługa WebJob jest uruchomiona po dodaniu komunikatów do kolejki. Wyzwalane zadania WebJob są zwykle używane tylko w przypadku ręcznych elementów webhook.

    Zmień typ zadania WebJob z okna Publikowanie programu VS 2022.

  2. Wybierz przycisk Publikuj w prawym górnym rogu strony Publikuj . Po zakończeniu operacji usługa WebJob jest uruchomiona na platformie Azure.

Tworzenie ustawienia aplikacji połączenia magazynu

Musisz utworzyć to samo ustawienie parametrów połączenia magazynu na platformie Azure, które zostało użyte lokalnie w pliku konfiguracji appsettings.json. Dzięki temu można bezpieczniej przechowywać parametry połączenia i

  1. Na stronie Profilu publikowania wybierz trzy kropki powyżej hostingu, aby wyświetlić akcje sekcji Profil hostingu, a następnie wybierz pozycję Zarządzaj ustawieniami Azure App Service.

  2. W obszarze Ustawienia aplikacji wybierz pozycję + Dodaj ustawienie.

  3. W polu Nazwa ustawienia Nowej aplikacji wpisz AzureWebJobsStorage i wybierz przycisk OK.

  4. W obszarze Zdalne wklej parametry połączenia z ustawienia lokalnego i wybierz przycisk OK.

Parametry połączenia są teraz ustawione w aplikacji na platformie Azure.

Wyzwalanie funkcji na platformie Azure

  1. Upewnij się, że nie działasz lokalnie. Zamknij okno konsoli, jeśli nadal jest otwarte. W przeciwnym razie wystąpienie lokalne może być pierwszym do przetworzenia wszystkich utworzonych komunikatów w kolejce.

  2. Na stronie Kolejka w programie Visual Studio dodaj komunikat do kolejki tak jak poprzednio.

  3. Odśwież stronę Kolejka , a nowy komunikat zniknie, ponieważ został przetworzony przez funkcję działającą na platformie Azure.

Włączanie rejestrowania usługi Application Insights

Po uruchomieniu zadania WebJob na platformie Azure nie można monitorować wykonywania funkcji, wyświetlając dane wyjściowe konsoli. Aby móc monitorować zadania WebJob, należy utworzyć skojarzone wystąpienie usługi Application Insights podczas publikowania projektu.

Tworzenie wystąpienia usługi Application Insights

  1. Na stronie Profil publikowania wybierz trzy kropki powyżej pozycji Hosting , aby wyświetlić akcje sekcji Profil hostingu , a następnie wybierz pozycję Otwórz w witrynie Azure Portal.

  2. W aplikacji internetowej w obszarze Ustawienia wybierz pozycję Application Insights, a następnie wybierz pozycję Włącz usługę Application Insights.

  3. Sprawdź wygenerowaną nazwę zasobu dla wystąpienia i lokalizacji, a następnie wybierz pozycję Zastosuj.

  4. W obszarze Ustawienia wybierz pozycję Konfiguracja i sprawdź, czy utworzono nową APPINSIGHTS_INSTRUMENTATIONKEY . Ten klucz służy do łączenia wystąpienia zadania WebJob z usługą Application Insights.

Aby korzystać z rejestrowania usługi Application Insights , należy również zaktualizować kod rejestrowania.

Instalowanie rozszerzenia usługi Application Insights

  1. Pobierz najnowszą stabilną wersję pakietu NuGet Microsoft.Azure.WebJobs.Logging.ApplicationInsights w wersji 3.x.

  2. W poniższym poleceniu zastąp <3_X_VERSION> ciąg bieżącym numerem wersji znalezionym w kroku 1. Każdy typ pakietu NuGet ma unikatowy numer wersji.

    Install-Package Microsoft.Azure.WebJobs.Logging.ApplicationInsights -Version <3_X_VERSION>
    
  3. W konsoli menedżera pakietów wykonaj polecenie z bieżącym numerem wersji w punkcie PM> wejścia.

Inicjowanie dostawcy rejestrowania usługi Application Insights

Otwórz plik Program.cs i dodaj następujący inicjator w ConfigureLogging pliku po wywołaniu metody AddConsole:

// If the key exists in settings, use it to enable Application Insights.
string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(instrumentationKey))
{
    b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
}

Kod Main metody powinien teraz wyglądać podobnie do następującego przykładu:

static async Task Main()
{
    var builder = new HostBuilder();
    builder.UseEnvironment(EnvironmentName.Development);
    builder.ConfigureWebJobs(b =>
            {
                b.AddAzureStorageCoreServices();
                b.AddAzureStorage();
            });
    builder.ConfigureLogging((context, b) =>
            {
                b.AddConsole();

                // If the key exists in settings, use it to enable Application Insights.
                string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
                if (!string.IsNullOrEmpty(instrumentationKey))
                {
                    b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
                }
            });
    var host = builder.Build();
    using (host)
    {
        await host.RunAsync();
    }
}

Spowoduje to zainicjowanie dostawcy rejestrowania usługi Application Insights z domyślnym filtrowaniem. W przypadku uruchamiania lokalnego wszystkie informacje i dzienniki wyższego poziomu są zapisywane zarówno w konsoli, jak i w usłudze Application Insights.

Ponowne opublikowanie projektu i ponowne wyzwolenie funkcji

  1. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.

  2. Tak jak poprzednio, użyj Azure Portal, aby utworzyć komunikat w kolejce, tak jak wcześniej, z wyjątkiem wprowadzania komunikatu Hello App Insights! jako tekstu komunikatu.

  3. Na stronie Profil publikowania wybierz trzy kropki powyżej pozycji Hosting , aby wyświetlić akcje sekcji Profil hostingu , a następnie wybierz pozycję Otwórz w witrynie Azure Portal.

  4. W aplikacji internetowej w obszarze Ustawienia wybierz pozycję Application Insights, a następnie wybierz pozycję Wyświetl dane usługi Application Insights.

  5. Wybierz pozycję Wyszukaj , a następnie wybierz pozycję Zobacz wszystkie dane w ciągu ostatnich 24 godzin.

    Wybierz pozycję Wyszukaj

  6. Jeśli nie widzisz komunikatu Hello App Insights! , wybierz pozycję Odśwież okresowo przez kilka minut. Dzienniki nie są wyświetlane natychmiast, ponieważ opróżnianie dzienników przez klienta usługi Application Insights zajmuje trochę czasu.

    Dzienniki w usłudze Application Insights

Dodawanie powiązań wejściowych/wyjściowych

Powiązania upraszczają kod odczytujący i zapisujący dane. Powiązania wejściowe upraszczają kod odczytujący dane. Powiązania wyjściowe upraszczają kod, który zapisuje dane.

Dodawanie powiązań

Powiązania wejściowe upraszczają kod odczytujący dane. W tym przykładzie komunikat w kolejce to nazwa obiektu blob, który będzie używany do znajdowania i odczytywania obiektu blob w usłudze Azure Storage. Następnie użyjesz powiązań wyjściowych, aby zapisać kopię pliku w tym samym kontenerze.

  1. W pliku Functions.cs dodaj element using:

    using System.IO;
    
  2. Zastąp metodę ProcessQueueMessage poniższym kodem:

    public static void ProcessQueueMessage(
        [QueueTrigger("queue")] string message,
        [Blob("container/{queueTrigger}", FileAccess.Read)] Stream myBlob,
        [Blob("container/copy-{queueTrigger}", FileAccess.Write)] Stream outputBlob,
        ILogger logger)
    {
        logger.LogInformation($"Blob name:{message} \n Size: {myBlob.Length} bytes");
        myBlob.CopyTo(outputBlob);
    }
    

    W tym kodzie jest wyrażeniem powiązania, co oznacza, queueTrigger że jest rozpoznawane na inną wartość w czasie wykonywania. W czasie wykonywania ma on zawartość komunikatu kolejki.

    Ten kod używa powiązań wyjściowych do utworzenia kopii pliku identyfikowanego przez komunikat w kolejce. Kopia pliku jest poprzedzona prefiksem copy-.

  3. W pliku Program.cs w metodzie ConfigureWebJobs rozszerzenia dodaj metodę AddAzureStorageBlobs w wystąpieniu HostBuilder (przed poleceniem Build ), aby zainicjować rozszerzenie magazynu. W tym momencie ConfigureWebJobs metoda wygląda następująco:

    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddAzureStorageQueues();
        b.AddAzureStorageBlobs();
    });
    
  4. Utwórz kontener obiektów blob na koncie magazynu.

    a. W Azure Portal przejdź do karty Kontenery poniżej pozycji Magazyn danych i wybierz pozycję + Kontener

    b. W oknie dialogowym Nowy kontener wprowadź kontener jako nazwę kontenera, a następnie wybierz pozycję Utwórz.

  5. Przekaż plik Program.cs do kontenera obiektów blob. (Ten plik jest używany w tym miejscu jako przykład; można przekazać dowolny plik tekstowy i utworzyć komunikat w kolejce z nazwą pliku).

    a. Wybierz utworzony nowy kontener

    b. Wybierz przycisk Przekaż.

    Przycisk przekazywania obiektów blob

    c. Znajdź i wybierz plik Program.cs, a następnie wybierz przycisk OK.

Ponowne publikowanie projektu

  1. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.

  2. W oknie dialogowym Publikowanie upewnij się, że wybrano bieżący profil, a następnie wybierz pozycję Publikuj. Wyniki publikowania są szczegółowe w oknie Dane wyjściowe .

  3. Utwórz komunikat kolejki w utworzonej wcześniej kolejce z plikiem Program.cs jako tekst komunikatu.

    Kolejka komunikatów Program.cs

  4. Kopia pliku copy-Program.cs zostanie wyświetlona w kontenerze obiektów blob.

Następne kroki

W tym samouczku pokazano, jak utworzyć, uruchomić i wdrożyć projekt zestawu Sdk 3.x usługi WebJobs.