Ćwiczenie — tworzenie i testowanie prostej funkcji platformy Azure w środowisku lokalnym za pomocą programu Visual Studio
Program Visual Studio zapewnia doskonałe środowisko do tworzenia i testowania aplikacji funkcji platformy Azure. Możesz opracować funkcję platformy Azure lokalnie i sprawdzić, czy działa prawidłowo, zanim wdrożysz ją w chmurze.
W scenariuszu witryny internetowej luksusowych zegarków istnieje wymóg funkcji, która zwraca szczegółowe informacje o zegarku w przypadku numeru modelu zegarka. Zwrócone dane obejmują: producent, typ tylnej litery (solidny, przezroczysty lub wygrawerowany), ramkę, styl tarczy, wykończenie przypadku, liczbę klejnotów itd.
W tym ćwiczeniu zaimplementujesz i przetestujesz lokalnie wersję tej funkcji przy użyciu programu Visual Studio.
Uwaga
Przed rozpoczęciem tego ćwiczenia upewnij się, że masz zainstalowany program VS 2022 wraz z rozszerzeniami obciążeń Sieci Web i chmury ASP.NET i tworzenia aplikacji internetowych i tworzenia aplikacji na platformie Azure.
Tworzenie aplikacji funkcji platformy Azure
Tworzenie aplikacji funkcji platformy Azure przy użyciu szablonu usługi Azure Functions .
Uruchom Instalator programu Visual Studio i na stronie startowej programu Visual Studio 2022 wybierz pozycję Modyfikuj.
Upewnij się , że wybrano ASP.NET i tworzenie aplikacji internetowych oraz programowanie na platformie Azure (jeśli nie wybierze pozycji Zainstaluj podczas pobierania), a następnie wybierz pozycję Zamknij.
Na stronie startowej programu Visual Studio 2022 wybierz pozycję Uruchom.
W menu Wprowadzenie wybierz pozycję Utwórz nowy projekt. Zostanie wyświetlona strona Tworzenie nowego projektu.
Wyszukaj lub przewiń do szablonu usługi Azure Functions , a następnie wybierz pozycję Dalej.
Zostanie wyświetlona strona Konfiguruj nowy projekt. Wprowadź następujące wartości.
Pole Wartość Nazwa projektu WatchPortalFunction Lokalizacja Wybierz lokalizację do przechowywania projektu, przechodząc do folderu lub tworząc folder na komputerze lokalnym. Nazwa rozwiązania Zaakceptuj element WatchPortalFunction (ustawienie domyślne). Umieść rozwiązanie i projekt w tym samym katalogu Niezaznaczone (NIE zaznaczono). To ustawienie zapewnia poprawną strukturę folderów dla tego modułu. Wybierz Dalej.
Zostanie wyświetlona strona Dodatkowe informacje .
Wybierz następujące wartości.
Pole Wartość Wersja dotnet *.NET 6.0 (długoterminowa pomoc techniczna) Wyzwalacz funkcji Wyzwalacz HTTP Używanie usługi Azurite na potrzeby konta magazynu środowiska uruchomieniowego (AzureWebJobsStorage) Sprawdzane Włączanie platformy Docker Niezaznaczone Poziom autoryzacji Anonimowy Jeśli powiadomienie programu Visual Studio pokazuje, że aktualizacje są gotowe, wybierz pozycję Odśwież.
Wybierz pozycję Utwórz.
Program Visual Studio tworzy
WatchPortalFunction
projekt i wyświetla plikFunction1.cs
kodu źródłowego aplikacji usługi Functions w oknie edytora kodu. Plik zawiera kod klasy o nazwieFunction1
.Jak pokazano w poniższym przykładowym kodzie,
Function1
klasa zawiera standardowy kod z szablonu wyzwalacza HTTP. MetodaRun
zawiera adnotację z atrybutem[FunctionName ("Function1")]
. W poprzedniej lekcji dowiedzieliśmy się, że parametry standardowy dlaRun
metody są obiektem zawierającymHttpRequest
szczegóły żądania, które wyzwoliło funkcję, oraz wpis dziennika śledzenia na potrzeby rejestrowania informacji śledzenia.namespace WatchPortalFunction { public static class Function1 { [FunctionName("Function1")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); string name = req.Query["name"]; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); name = name ?? data?.name; return name != null ? (ActionResult)new OkObjectResult($"Hello, {name}") : new BadRequestObjectResult("Please pass a name on the query string or in the request body"); } } }
Tworzenie funkcji platformy Azure o nazwie WatchInfo
W menu Widok wybierz pozycję Eksplorator rozwiązań. W oknie Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt WatchPortalFunction usługi Azure Functions, a następnie w menu kontekstowym wybierz polecenie Dodaj>nową funkcję platformy Azure.
W oknie Dodawanie nowego elementu — WatchPortalFunction wybierz pozycję Funkcja platformy Azure. W polu Nazwa wprowadź WatchInfo.cs, a następnie wybierz pozycję Dodaj.
W oknie Nowa funkcja platformy Azure — WatchInfo wybierz pozycję Wyzwalacz HTTP. Z listy rozwijanej Poziom autoryzacji wybierz pozycję Anonimowe, a następnie wybierz pozycję Dodaj.
Program Visual Studio tworzy nową funkcję, a
Run
metoda jest oznaczona adnotacją za pomocą atrybutu[FunctionName("WatchInfo")]
.W treści
Run
funkcji usuń kod polog.LogInformation
wierszu. Wynik powinien wyglądać następująco.namespace WatchPortalFunction { public static class WatchInfo { [FunctionName("WatchInfo")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); } } }
Wstaw następujący kod w treści
Run
metody polog.LogInformation
wierszu.// Retrieve the model id from the query string string model = req.Query["model"]; // If the user specified a model id, find the details of the model of watch if (model != null) { // Use dummy data for this example dynamic watchinfo = new { Manufacturer = "abc", CaseType = "Solid", Bezel = "Titanium", Dial = "Roman", CaseFinish = "Silver", Jewels = 15 }; return (ActionResult)new OkObjectResult($"Watch Details: {watchinfo.Manufacturer}, {watchinfo.CaseType}, {watchinfo.Bezel}, {watchinfo.Dial}, {watchinfo.CaseFinish}, {watchinfo.Jewels}"); } return new BadRequestObjectResult("Please provide a watch model in the query string");
Ten kod odczytuje
model
parametr z ciągu zapytania w żądaniu HTTP i zwraca szczegóły dla tego modelu zegarka. W tym przykładowym kodzie utworzyliśmy fikcyjnewatchinfo
dane, które są zwracane niezależnie od wartościmodel
. Funkcja zwraca odpowiedź zawierającą te szczegóły. Lub jeśli żądanie HTTP nie zawiera ciągu zapytania, funkcja zwraca komunikat o błędzie. W rzeczywistym przykładzie użyjeszmodel
wartości , aby wyszukać poprawnąwatchinfo
wartość do zwrócenia.
Testowanie funkcji platformy Azure w środowisku lokalnym
Na pasku poleceń wybierz pozycję Debuguj>Rozpocznij debugowanie.
Program Visual Studio kompiluje aplikację funkcji platformy Azure i uruchamia środowisko uruchomieniowe usługi Azure Functions. Zostanie otwarte okno Dane wyjściowe, aby wyświetlić komunikaty podczas uruchamiania środowiska uruchomieniowego. Gdy środowisko uruchomieniowe będzie gotowe, zostanie wyświetlona lista funkcji HTTP i adres URL, których można użyć do wyzwolenia każdej funkcji.
Otwórz przeglądarkę internetową i wprowadź adres URL wyświetlany w oknie środowiska uruchomieniowego. Domyślny adres URL to
http://localhost:7071/api/WatchInfo?model=abc
, więc jest to adres, którego używamy w tym ćwiczeniu. Żądanie wyzwalaWatchInfo
funkcję i przekazuje modelabc
jako parametr ciągu zapytania. Przeglądarka internetowa powinna wyświetlić fikcyjne szczegóły wygenerowane przez funkcję.Wprowadź adres URL
http://localhost:7071/api/WatchInfo
. To żądanie nie zawiera ciągu zapytania. Wyzwalacz zwraca odpowiedź o błędzie, a przeglądarka internetowa wyświetla komunikatPlease provide a watch model in the query string
.Zamknij przeglądarkę internetową, ale pozostaw uruchomioną aplikację funkcji platformy Azure.
W programie Visual Studio ustaw punkt przerwania w wierszu kodu odpowiadającym za pobranie modelu z ciągu zapytania.
Uruchom ponownie przeglądarkę internetową i wprowadź adres URL bez ciągu
http://localhost:7071/api/WatchInfo
zapytania .Program Visual Studio wyróżnia kod w punkcie przerwania, w którym wykonywanie jest wstrzymane.
W programie Visual Studio, aby przejść przez instrukcję w punkcie przerwania, naciśnij F10.
Na karcie Autos (Autos) okna Debugger (Debuger) sprawdź, czy zmienna
model
tonull
. Zmienna pokazuje tę wartość, ponieważ ciąg zapytania nie zawiera parametru modelu.Naciśnij F10 ponownie i sprawdź, czy kontrolka przechodzi do instrukcji zwracającej
BadRequestObjectResult
obiekt.Aby kontynuować uruchamianie metody i wrócić do przeglądarki internetowej, naciśnij F5. Powinien zostać wyświetlony ten sam komunikat o błędzie.
W przeglądarce internetowej wprowadź adres URL z ciągiem zapytania i parametrem „model”. Przejrzyj funkcję w debugerze i sprawdź, czy model został prawidłowo pobrany. Zmienna
model
powinna otrzymać wartość parametru, a szczegóły modelu powinny zostać zwrócone jako obiektOkObjectResult
.Na pasku menu wybierz pozycję Debuguj Zatrzymaj>debugowanie debugowania.
W tym ćwiczeniu pokazano, jak rozszerzenie Narzędzi usługi Azure Functions w programie Visual Studio upraszcza tworzenie aplikacji funkcji platformy Azure, umożliwiając tworzenie i debugowanie kodu za pomocą znanych narzędzi.