Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

Azure Functions App in Visual Studio erstellen

07.08.2019 (👁1196)

Azure Functions App in Visual Studio erstellen

Man kann Azure Functions und Cloud funktionen auch in Visual Studio oder im Azure Portal erstellen.

In Visual Studio ist die kostenlose Visual Studio Community Edition 2019 zur Verfügung.

Erstellen

Zum Erstellen einer neuen Azure Function App geht man auf Menü->Datei->Neu->Projekt..

Im Dialog: Neues Projekt erstellen

Wählt ma : Azure Functions

Eine Vorlage zum Erstellen einer Azure Function Projects (C#, Azure Cloud)

Hierzu muss bei der Installation / Setup von Visual Studio Azure mit ausgewählt wein

Neues Projekt konfigurieren

Unter Projektname einen eindeutigen lokalen Projektname eingeben

Unter Standort: wählt man ein Datenverzeichnis, unter welchem man Visual Studio Projekte auf dem Windows Computer speichert und verwaltet.

Mit dem Button: Erstellen wird das Azure Functions Projekt als VS Projektmappe erstellt.

Neue Azure Functions-Anwendung erstellen

Dann wählt man eine einzelne Funktion aus, welche eingebettet werden soll

In der Regel ist das der HTTP trigger, welcher auf eine URL Anfrage Request reagiert.

Azure Function Projekt

In der Azure Projektmappe befindet sich dann die Function1.cs Datei, welche den Aufruf Text der Funktion in Azure enthält.

Anders gesagt: wenn man die URL mit diesem Namen aus einem Browser oder einer Anwendung oder IoT aufruft, dann wird der Azure function Code ausgeführt und gibt ein Ergebnis im Web-format zurück

Initiale Azure Function1.cs Datei

Diese enthält den Task Aufruf per URL „Function1“ und erstellt einen IActionResult-Task.

Das heißt, die Methode nimmt eine Web-Anfrage auf, liest Parameter aus der Anfrage aus und reagiert dann wie ein Webserver mit Berechnungen und einer http-Antwort.

using System;

using System.IO;

using System.Threading.Tasks;

using Microsoft.AspNetCore.Mvc;

using Microsoft.Azure.WebJobs;

using Microsoft.Azure.WebJobs.Extensions.Http;

using Microsoft.AspNetCore.Http;

using Microsoft.Extensions.Logging;

using Newtonsoft.Json;

namespace FunctionApp01

{

    public static class Function1

    {

        [FunctionName("Function1")]

        public static async Task<IActionResult> Run(

            [HttpTrigger(AuthorizationLevel.Function, "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");

        }

    }

}

Local.settings.json

In der Local.settings Daei wird festgelegt, dass die Azure Function in dotnet also C# ausgeführt wird.

Zudem wird angegeben, dass der Storage lokal entwickelt wird. („AzureWebJobsStorage": "UseDevelopmentStorage=true")

{

    "IsEncrypted": false,

    "Values": {

        "AzureWebJobsStorage": "UseDevelopmentStorage=true",

        "FUNCTIONS_WORKER_RUNTIME": "dotnet"

    }

}

In der Projekt-Datei

Wenn man die Azure Function Projekt Datei direkt doppelklickt und öffnet, dann wird eine xml Struktur geöffnet.

Diese Projekt-Datei beschreibt, dass das TargetFramework netcoreapp2.x verwendet wird.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>

    <TargetFramework>netcoreapp2.1</TargetFramework>

    <AzureFunctionsVersion>v2</AzureFunctionsVersion>

  </PropertyGroup>

  <ItemGroup>

    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.24" />

  </ItemGroup>

  <ItemGroup>

    <None Update="host.json">

      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>

    </None>

    <None Update="local.settings.json">

      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>

      <CopyToPublishDirectory>Never</CopyToPublishDirectory>

    </None>

  </ItemGroup>

</Project>