Övning – Skapa och testa en Azure-funktion lokalt med Visual Studio
Visual Studio är en utmärkt miljö för att skapa och testa en Azure-funktionsapp. Du kan utveckla en Azure-funktion lokalt och kontrollera att den fungerar korrekt innan du distribuerar den till molnet.
I scenariot med onlinewebbplatsen för lyxklockan finns det ett krav på en funktion som returnerar detaljerad information om en klocka när den ges klockans modellnummer. De data du behöver returnera inkluderar: tillverkaren, typen av fall tillbaka (solid, transparent eller graverad), ramen, stilen på urtavlan, efterbehandlingen av fallet, antalet juveler och så vidare.
I den här övningen implementerar och testar du en version av den här funktionen lokalt med hjälp av Visual Studio.
Kommentar
Innan du påbörjar den här övningen kontrollerar du att Visual Studio 2022 är installerat, tillsammans med arbetsbelastningstilläggen för webb - och moln ASP.NET och webbutveckling och Azure-utveckling.
Skapa en Azure-funktionsapp
Skapa en Azure-funktionsapp med hjälp av en Azure Functions-mall .
- Starta Visual Studio Installer och välj Ändra på startsidan för Visual Studio 2022. 
- Se till att ASP.NET och webbutveckling och Azure-utveckling är valda och tillgängliga (om de inte väljer Installera när du laddar ned) och välj sedan Stäng.   
- På startsidan för Visual Studio 2022 väljer du Starta. 
- På menyn Kom igång väljer du Skapa ett nytt projekt. Fönstret Create a new project (Skapa ett nytt projekt) visas. 
- Sök efter eller bläddra till Azure Functions-mallen och välj sedan Nästa.   
- Sidan Configure your new project (Konfigurera ditt nya projekt) visas. Ange följande värden. - Fält - Värde - Projektnamn - WatchPortalFunction - Plats - Välj en plats för att lagra projektet genom att bläddra till en mapp eller skapa en mapp på den lokala datorn. - Namn på lösning - Acceptera WatchPortalFunction (standard). - Placera lösningen och projektet i samma katalog - Avmarkerat (INTE markerat). Den här inställningen säkerställer rätt mappstruktur för den här modulen.   
- Välj Nästa. 
- Sidan Ytterligare information visas. 
- Välj följande värden. - Fält - Värde - Dotnet-version - *.NET 6.0 (långsiktigt stöd) - Funktionsutlösare - Http-utlösare - Använda Azurite för körningslagringskonto (AzureWebJobsStorage) - Rutig - Aktivera Docker - Avmarkerat - Auktoriseringsnivå - Anonym - Om ett Visual Studio-meddelande visar att uppdateringarna är klara väljer du Uppdatera. 
- Välj Skapa.   - Visual Studio skapar - WatchPortalFunctionprojektet och visar källkodsfilen- Function1.csför Functions App i kodredigerarens fönster. Filen innehåller koden för en klass med namnet- Function1.- Som du ser i följande exempelkod - Function1innehåller klassen exempelkod från HTTP-utlösarmallen. Metoden- Runkommenteras med- [FunctionName ("Function1")]-attributet. I föregående lektion lärde vi oss att parametrarna för boilerplate för- Runmetoden är ett- HttpRequestobjekt som innehåller information om den begäran som utlöste funktionen och en spårningsloggpost för registrering av spårningsinformation.- 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"); } } }
Skapa WatchInfo Azure-funktionen
- I menyn Visa väljer du Solution Explorer. Högerklicka på Azure Functions-projektet WatchPortalFunction i Solution Explorer och välj Lägg till>ny Azure-funktion på snabbmenyn.   
- I fönstret Add New Item - WatchPortalFunction (Lägg till nytt objekt - WatchPortalFunction) väljer du Azure Function (Azure-funktion). I fältet Namn anger du WatchInfo.cs och väljer sedan Lägg till.   
- I fönstret New Azure Function - WatchInfo (Ny Azure-funktion - WatchInfo) väljer du Http trigger (Http-utlösare). I listrutan Auktoriseringsnivå väljer du Anonym och sedan Lägg till.   - Visual Studio skapar en ny funktion och - Runmetoden kommenteras med attributet- [FunctionName("WatchInfo")].
- Ta bort koden efter - Runraden i brödtexten i- log.LogInformationfunktionen. Resultatet bör se ut så här.- 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."); } } }
- Infoga följande kod i brödtexten i - Runmetoden efter- log.LogInformationrad.- // 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");- Den här koden läser parametern - modelfrån frågesträngen i HTTP-begäran och returnerar information om klockmodellen. I den här exempelkoden skapade vi dummydata- watchinfosom returneras oavsett värdet- modelför . Funktionen returnerar ett svar som innehåller den här informationen. Om HTTP-begäran inte innehåller en frågesträng returnerar funktionen ett felmeddelande. I ett verkligt exempel använder- modeldu värdet för att göra en sökning av rätt- watchinfoför att returnera.
Testa Azure-funktionen lokalt
- I kommandofältet väljer du Felsöka>Starta felsökning. - Visual Studio bygger Azure-funktionsappen och startar Azure Functions-körningen. Ett utdatafönster öppnas för att visa meddelanden när körningen startar. När körningen är klar visas en lista över HTTP-funktionerna och den URL som du kan använda för att utlösa varje funktion.   
- Öppna en webbläsare och ange den URL som visas i körningsfönstret. Standard-URL:en är - http://localhost:7071/api/WatchInfo?model=abc, så det är den vi använder i den här övningen. Begäran utlöser- WatchInfofunktionen och skickar modellen- abcsom frågesträngsparameter. Webbläsaren bör visa dummyinformationen som genereras av funktionen.  
- Ange URL:en - http://localhost:7071/api/WatchInfo. Den här begäran innehåller inte en frågesträng. Utlösaren returnerar felsvaret och webbläsaren visar meddelandet- Please provide a watch model in the query string.
- Stäng webbläsaren, men låt Azure-funktionsappen vara igång. 
- Ange en brytpunkt i Visual Studio på den rad i koden som hämtar modellen från frågesträngen.   
- Starta om webbläsaren och ange URL:en utan frågesträngen - http://localhost:7071/api/WatchInfo.- Visual Studio markerar koden vid brytpunkten där körningen pausas. 
- Tryck på F10 för att gå över instruktionen vid brytpunkten i Visual Studio. 
- På fliken Autos i felsökningsfönstret kontrollerar du att variabeln - modelär- null. Variabeln visar det här värdet eftersom frågesträngen inte innehåller någon modellparameter.  
- Tryck på F10 igen och kontrollera att kontrollen hoppar till instruktionen som returnerar ett - BadRequestObjectResultobjekt.
- Om du vill fortsätta köra metoden och återgå till webbläsaren trycker du på F5. Samma felmeddelande ska visas. 
- Ange URL:en med en frågesträng och en modellparameter i webbläsaren. Gå igenom funktionen i felsökningsprogrammet och kontrollera att modellen har hämtats korrekt. Variabeln - modelbör fyllas i med värdet för parametern, och informationen om modellen bör returneras som ett- OkObjectResult-objekt.
- På menyraden väljer du Felsöka>sluta felsöka. 
I den här övningen såg du hur Azure Functions Tools-tillägget i Visual Studio förenklar upplevelsen av att skapa en Azure-funktionsapp genom att låta dig använda välbekanta verktyg för att skapa och felsöka koden.