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
Program Visual Studio 2022 z pakietem roboczym Programowanie na platformie Azure . Zainstaluj program Visual Studio 2022.
Konto platformy Azure z aktywną subskrypcją. Utwórz bezpłatne konto.
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
W programie Visual Studio wybierz pozycję Plik>nowy>projekt.
W obszarze Utwórz nowy projekt wybierz pozycję Aplikacja konsolowa (C#), a następnie wybierz przycisk 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), które umożliwiają publikowanie kodu funkcji w zadaniach WebJob w Azure App 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ę Konsola menedżera 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ż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 IHost
hosta , 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ąpieniuHostBuilder
. Aby uzyskać więcej informacji, zobacz Host ogólny platformy .NET. Metoda ConfigureWebJobs
rozszerzenia inicjuje hosta zadań WebJob. 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 zewnętrznymi 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żera pakietów wypełnij 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 pliku Program.cs, dodaj metodę
ConfigureLogging
doHostBuilder
pliku przed poleceniemBuild
. MetodaAddConsole
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:
- 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ń 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.
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żera pakietów wykonaj polecenie z bieżącym numerem wersji w punkcie
PM>
wejścia.Kontynuując w pliku Program.cs, w
ConfigureWebJobs
metodzie rozszerzenia dodaj metodęAddAzureStorageQueues
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(); });
Dodaj następujący kod w metodzie po utworzeniu
Main
builder
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.
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 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 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, 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.
W 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 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.
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.
W nowym pliku dodaj
AzureWebJobsStorage
pole, jak w poniższym przykładzie:{ "AzureWebJobsStorage": "{storage connection string}" }
Zastąp ciąg {storage connection string} parametrami połączenia skopiowanymi wcześniej.
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ę.
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).
Kliknij nową kolejkę i wybierz pozycję Dodaj komunikat.
W oknie dialogowym Dodawanie komunikatu wprowadź Hello world! jako tekst wiadomości, a następnie wybierz przycisk OK. W kolejce jest teraz komunikat.
Naciśnij klawisze Ctrl+F5 , aby uruchomić projekt.
Konsola pokazuje, że środowisko uruchomieniowe znalazło funkcję. Ponieważ użyto atrybutu
QueueTrigger
ProcessQueueMessage
w funkcji, środowisko uruchomieniowe 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.Wstecz do okna Kolejka i odśwież go. Komunikat zniknął, ponieważ został przetworzony przez funkcję działającą 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 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
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.
W oknie dialogowym Publikowanie wybierz pozycję Azure dla pozycji Cel, a następnie wybierz pozycję Dalej.
Wybierz pozycję Azure WebJobs dla określonego elementu docelowego, a następnie wybierz pozycję Dalej.
Powyżej App Service wystąpienia wybierz przycisk plus (+), aby utworzyć nowy obiekt WebJob platformy Azure.
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. 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 będzie bezczynne 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 Azure Portal.
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.
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.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
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.
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 są teraz ustawione 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, należy utworzyć skojarzone wystąpienie usługi Application Insights podczas publikowania projektu.
Tworzenie wystąpienia usługi Application Insights
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.
W aplikacji internetowej w obszarze Ustawienia wybierz pozycję Application Insights, a następnie wybierz pozycję Włącz usługę Application Insights.
Sprawdź wygenerowaną nazwę zasobu dla wystąpienia i lokalizacji, 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ż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
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.
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.
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.
W aplikacji internetowej w obszarze Ustawienia wybierz pozycję Application Insights, a następnie 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 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 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.
W pliku 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 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-.
W pliku 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 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 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ż.
c. Znajdź i wybierz plik 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 plikiem 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 Sdk 3.x usługi WebJobs.