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 usługi aplikacja systemu Azure, 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 konsolowej
- 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
Program Visual Studio 2022 z pakietem roboczym Programowanie na platformie Azure. Zainstaluj program Visual Studio 2022.
Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Tworzenie aplikacji konsolowej
W tej sekcji zaczniesz 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 są weryfikowane pod kątem tworzenia aplikacji konsolowej platformy .NET Core działającej na platformie .NET 6.0.
Tworzenie projektu
W programie Visual Studio wybierz pozycje Plik>Nowy>Projekt.
W obszarze Utwórz nowy projekt wybierz pozycję Aplikacja konsolowa (C#),a następnie wybierz pozycję Dalej.
W obszarze Konfigurowanie nowego projektu nadaj projektowi nazwę WebJobsSDKSample, a następnie wybierz pozycję Dalej.
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), co umożliwia publikowanie kodu funkcji w zadaniach WebJob w usłudze aplikacja systemu Azure Service.
Pobierz najnowszą stabilną wersję 4.x pakietu NuGet Microsoft.Azure.WebJobs.Extensions.
W programie Visual Studio przejdź do pozycji Narzędzia>Menedżer pakietów NuGet.
Wybierz pozycję Menedżer pakietów Console (Konsola Menedżer pakietów). Zostanie wyświetlona lista poleceń cmdlet NuGet, link do dokumentacji i
PM>
punkt wejścia.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>
W konsoli Menedżer pakietów wykonaj polecenie . Zostanie wyświetlona lista rozszerzeń i zostanie automatycznie zainstalowana.
Tworzenie hosta
Host to kontener środowiska uruchomieniowego dla funkcji, które nasłuchują wyzwalaczy i wywołuje funkcje. Poniższe kroki umożliwiają utworzenie hosta, który implementuje IHost
element , który jest hostem ogólnym w ASP.NET Core.
Wybierz kartę Program.cs , usuń istniejącą zawartość i dodaj następujące
using
instrukcje:using System.Threading.Tasks; using Microsoft.Extensions.Hosting;
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ąpieniu HostBuilder
. Aby uzyskać więcej informacji, zobacz Host ogólny platformy .NET. Metoda ConfigureWebJobs
rozszerzenia inicjuje hosta zadań WebJobs. W ConfigureWebJobs
pliku 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 innymi dostawcami rejestrowania.
Pobierz najnowszą stabilną wersję
Microsoft.Extensions.Logging.Console
pakietu NuGet, która zawieraMicrosoft.Extensions.Logging
element .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>
W konsoli Menedżer pakietów wprowadź bieżący numer wersji i wykonaj polecenie . Zostanie wyświetlona lista rozszerzeń i zostanie automatycznie zainstalowana.
Na karcie Program.cs dodaj następującą
using
instrukcję:using Microsoft.Extensions.Logging;
Kontynuuj w obszarze Program.cs, dodaj metodę
ConfigureLogging
doHostBuilder
metody przed poleceniemBuild
. MetodaAddConsole
dodaje rejestrowanie konsoli do konfiguracji.builder.ConfigureLogging((context, b) => { b.AddConsole(); });
Teraz
Main
metoda wygląda 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:
- Wyłącza rejestrowanie pulpitu nawigacyjnego. Pulpit nawigacyjny jest starszym narzędziem do monitorowania, a rejestrowanie pulpitów nawigacyjnych nie jest zalecane w przypadku scenariuszy produkcyjnych o wysokiej przepływności.
- Dodaje dostawcę konsoli z domyślnym filtrowaniem.
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ń WebJobs wyzwalany nie odwołuje się do trybu wdrażania. Zadania WebJob oparte na zdarzeniach lub zaplanowane 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.
Pobierz najnowszą stabilną wersję pakietu NuGet Microsoft.Azure.WebJobs.Extensions.Storage w wersji 5.x.
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>
W konsoli Menedżer pakietów wykonaj polecenie z bieżącym numerem wersji w punkcie
PM>
wejścia.Kontynuuj w Program.cs w metodzie
ConfigureWebJobs
rozszerzenia dodajAddAzureStorageQueues
metodę wHostBuilder
wystąpieniu (przed poleceniemBuild
), aby zainicjować rozszerzenie magazynu. W tym momencieConfigureWebJobs
metoda wygląda następująco:builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); b.AddAzureStorageQueues(); });
Dodaj następujący kod w metodzie po utworzeniu
Main
builder
wystąpienia:builder.UseEnvironment(EnvironmentName.Development);
Uruchamianie w trybie programowania zmniejsza wycofywanie wykładnicze kolejki, 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 poniższego 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.
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt, wybierz polecenie Dodaj>nowy element, a następnie wybierz pozycję Klasa.
Nazwij nowy plik klasy C# Functions.cs i wybierz pozycję Dodaj.
W 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
w celu uzyskania dostępu do środowiska uruchomieniowego i wykonania metody. W powyższym przykładzie kodu po dodaniu komunikatu do kolejki o nazwiequeue
funkcja jest wykonywana, amessage
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 potrzebnych przez 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 parametry połączenia
Do skonfigurowania magazynu jest wymagany parametry połączenia. Zachowaj tę parametry połączenia, aby wykonać następne kroki.
W witrynie Azure Portal przejdź do konta magazynu i wybierz pozycję Ustawienia.
W obszarze Ustawienia wybierz pozycję Klucze dostępu.
W obszarze Parametry połączenia w obszarze key1 wybierz ikonę Kopiuj do schowka .
Konfigurowanie magazynu do uruchamiania lokalnie
Zestaw SDK usługi WebJobs szuka parametry połączenia magazynu w ustawieniach aplikacji na platformie Azure. Po uruchomieniu lokalnie wyszukuje tę wartość w lokalnym pliku konfiguracji lub w zmiennych środowiskowych.
Kliknij prawym przyciskiem myszy projekt, wybierz pozycję Dodaj>nowy element, wybierz pozycję Plik konfiguracji JavaScript JSON, nadaj nowej nazwie plikowi appsettings.json, a następnie wybierz pozycję Dodaj.
W nowym pliku dodaj
AzureWebJobsStorage
pole, jak w poniższym przykładzie:{ "AzureWebJobsStorage": "{storage connection string}" }
Zastąp wartość {storage parametry połączenia} skopiowaną wcześniej parametry połączenia.
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 jest nowsza.
Ponieważ ten plik zawiera wpis tajny parametry połączenia, nie należy przechowywać pliku w zdalnym repozytorium kodu. Po opublikowaniu projektu na platformie Azure możesz dodać to samo ustawienie aplikacji parametry połączenia w aplikacji w usłudze aplikacja systemu Azure Service.
Testowanie lokalne
Skompiluj i uruchom projekt lokalnie i utwórz kolejkę komunikatów, aby wyzwolić funkcję.
W witrynie Azure Portal przejdź do konta magazynu i wybierz kartę Kolejki (1). Wybierz pozycję + Kolejka (2) i wprowadź kolejkę jako nazwę kolejki (3). Następnie wybierz przycisk OK (4).
Kliknij nową kolejkę i wybierz pozycję Dodaj komunikat.
W oknie dialogowym Dodawanie wiadomości wprowadź ciąg Hello World! jako tekst wiadomości, a następnie wybierz przycisk OK. W kolejce jest teraz komunikat.
Naciśnij Ctrl+F5 , aby uruchomić projekt.
Konsola pokazuje, że środowisko uruchomieniowe znalazło funkcję. Ponieważ użyto atrybutu
QueueTrigger
wProcessQueueMessage
funkcji, środowisko uruchomieniowe zadań WebJobs nasłuchuje komunikatów w kolejce o nazwiequeue
. Po znalezieniu nowego komunikatu w tej kolejce środowisko uruchomieniowe wywołuje funkcję, przekazując wartość ciągu komunikatu.Wróć do okna Kolejka i odśwież go. Komunikat zniknął, ponieważ został przetworzony przez funkcję uruchomioną lokalnie.
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 usłudze App Service na platformie Azure zostanie ona automatycznie uruchomiona jako zadania 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
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.
W oknie dialogowym Publikowanie wybierz pozycję Azure w polu Cel, a następnie wybierz pozycję Dalej.
Wybierz pozycję Azure WebJobs dla określonego miejsca docelowego, a następnie wybierz pozycję Dalej.
Nad wystąpieniami usługi App Service wybierz przycisk plus (+) w celu utworzenia nowego zadania WebJob platformy Azure.
W oknie dialogowym App Service (Windows) użyj ustawień hostingu w poniższej tabeli.
Ustawienie Sugerowana wartość opis Nazwa/nazwisko Nazwa unikatowa w skali globalnej Unikatowa nazwa identyfikująca nową aplikację funkcji. Subskrypcja Wybierz swoją 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 usługi 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 usługi App Service. Warstwy Bezpłatna i Podstawowa nie obsługują opcji Zawsze włączone, aby zapewnić ciągłość działania witryny. 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.
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 przejdzie w stan bezczynności po kilku minutach braku aktywności.
Na stronie Publikowanie wybierz trzy kropki powyżej hostingu, aby wyświetlić akcje sekcji Profil hostingu, a następnie wybierz pozycję Otwórz w witrynie Azure Portal.
W obszarze Ustawienia wybierz pozycję Ustawienia ogólne konfiguracji>, ustaw opcję Zawsze włączone, a następnie wybierz pozycję Zapisz i kontynuuj, aby ponownie uruchomić lokację.
Publikowanie projektu
Po utworzeniu aplikacji internetowej na platformie Azure nadszedł czas na opublikowanie projektu zadań WebJob.
Na stronie Publikowanie w obszarze Hosting wybierz przycisk edycji i zmień typ zadania WebJob na
Continuous
i 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.Wybierz przycisk Publikuj w prawym górnym rogu strony Publikowanie. Po zakończeniu operacji usługa WebJob jest uruchomiona na platformie Azure.
Tworzenie ustawienia aplikacji połączenia magazynu
Musisz utworzyć to samo ustawienie parametry połączenia magazynu na platformie Azure, które było używane lokalnie w pliku konfiguracji appsettings.json. Dzięki temu można bezpieczniej przechowywać parametry połączenia i
Na stronie Publikowanie profilu wybierz trzy kropki powyżej hostingu, aby wyświetlić akcje sekcji Profil hostingu, a następnie wybierz pozycję Zarządzaj ustawieniami usługi aplikacja systemu Azure.
W obszarze Ustawienia aplikacji wybierz pozycję + Dodaj ustawienie.
W polu Nazwa ustawienia nowej aplikacji wpisz
AzureWebJobsStorage
i wybierz przycisk OK.W obszarze Zdalne wklej parametry połączenia z ustawienia lokalnego i wybierz przycisk OK.
Parametry połączenia jest teraz ustawiana w aplikacji na platformie Azure.
Wyzwalanie funkcji na platformie Azure
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.
Na stronie Kolejka w programie Visual Studio dodaj komunikat do kolejki tak jak poprzednio.
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, podczas publikowania projektu należy utworzyć skojarzone wystąpienie usługi Application Insights .
Tworzenie wystąpienia usługi Application Insights
Na stronie Publikowanie profilu wybierz trzy kropki powyżej hostingu, aby wyświetlić akcje sekcji Profil hostingu, a następnie wybierz pozycję Otwórz w witrynie Azure Portal.
W aplikacji internetowej w obszarze Ustawienia wybierz pozycję Application Insights i wybierz pozycję Włącz usługę Application Insights.
Sprawdź wygenerowaną nazwę zasobu dla wystąpienia i lokalizację, a następnie wybierz pozycję Zastosuj.
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
Pobierz najnowszą stabilną wersję pakietu NuGet Microsoft.Azure.WebJobs.Logging.ApplicationInsights w wersji 3.x.
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>
W konsoli Menedżer pakietów wykonaj polecenie z bieżącym numerem wersji w punkcie
PM>
wejścia.
Inicjowanie dostawcy rejestrowania usługi Application Insights
Otwórz 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
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.
Tak jak wcześniej, użyj witryny Azure Portal, aby utworzyć komunikat w kolejce, tak jak wcześniej, z wyjątkiem wprowadzenia funkcji Hello App Insights! jako tekstu wiadomości.
Na stronie Publikowanie profilu wybierz trzy kropki powyżej hostingu, aby wyświetlić akcje sekcji Profil hostingu, a następnie wybierz pozycję Otwórz w witrynie Azure Portal.
W aplikacji internetowej w obszarze Ustawienia wybierz pozycję Application Insights i wybierz pozycję Wyświetl dane usługi Application Insights.
Wybierz pozycję Wyszukaj , a następnie wybierz pozycję Zobacz wszystkie dane w ciągu ostatnich 24 godzin.
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 procesów przez klienta usługi Application Insights zajmuje trochę czasu.
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 kolejki 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.
W Functions.cs dodaj element
using
:using System.IO;
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
queueTrigger
jest wyrażeniem powiązania, co oznacza, że rozpoznaje 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 zidentyfikowanego przez komunikat kolejki. Kopia pliku jest poprzedzona prefiksem copy-.
W Program.cs w metodzie
ConfigureWebJobs
rozszerzenia dodaj metodęAddAzureStorageBlobs
w wystąpieniuHostBuilder
(przed poleceniemBuild
), aby zainicjować rozszerzenie magazynu. W tym momencieConfigureWebJobs
metoda wygląda następująco:builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); b.AddAzureStorageQueues(); b.AddAzureStorageBlobs(); });
Utwórz kontener obiektów blob na koncie magazynu.
a. W witrynie 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.
Przekaż plik Program.cs do kontenera obiektów blob. (Ten plik jest używany tutaj jako przykład; można przekazać dowolny plik tekstowy i utworzyć komunikat kolejki z nazwą pliku).
a. Wybierz utworzony nowy kontener
b. Wybierz przycisk Przekaż.
c. Znajdź i wybierz pozycję Program.cs, a następnie wybierz przycisk OK.
Ponowne publikowanie projektu
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.
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 .
Utwórz komunikat kolejki w utworzonej wcześniej kolejce z Program.cs jako tekst komunikatu.
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 WebJobs SDK 3.x.