Eine Azure-Funktion erstellen

Abgeschlossen

Die Verwendung von .NET Interop in der Business Central SaaS-Version ist nicht möglich. Durch die Verwendung von Azure-Funktionen haben Sie eine mögliche Lösung, wenn Sie noch eine Verbindung zu .NET-Bibliotheken herstellen müssen. Sie können direkt in C# mithilfe des Azure-Portalcode-Editors entwickeln, aber Sie können auch Ihre eigenen .NET-DLL-Bibliotheken entwickeln und diese in Ihrer Azure-Funktions-App verwenden.

Das folgende Codebeispiel zeigt eine kleine .NET-Klassenbibliothek, die gerade erstellt wird. In der Klassenbibliothek finden Sie eine Klasse BlackAndWhiteConverter, die Graustufen auf ein Bild anwendet. Das Bild wird mithilfe von HttpRequestMessage als Parameter übergeben. Daher wird eine externe Bibliothek ImageProcessor verwendet.

Das folgende Beispiel zeigt auch die C#-Implementierung.

using ImageProcessor;
using ImageProcessor.Imaging.Filters.Photo;
using System.IO;
using System.Net.Http;

namespace BlackAndWhitePicture
{
    public class BlackAndWhiteConverter
    {
        public HttpResponseMessage Convert(HttpRequestMessage request)
        {
            var stream = request.Content.ReadAsStreamAsync().Result;
            byte[] outArray;
            using (var outStream = new MemoryStream())
            {
                using (var imageFactory = new ImageFactory())
                {
                    imageFactory.Load(stream)
                        .Filter(MatrixFilters.GreyScale)
                        .Save(outStream);
                }
                outArray = outStream.ToArray();
            }

            var result = new HttpResponseMessage(HttpStatusCode.OK);
            result.Content = new ByteArrayContent(outArray);
            result.Content.Headers.ContentType = 
                   new MediaTypeHeaderValue("image/jpg");
            return result;
        }
    }
}

Das Ergebnis einer .NET-Klassenbibliothek ist eine DLL-Datei, die Sie in Azure hochladen und in einer Azure-Funktion verwenden können. Um eine .NET-Bibliothek hochzuladen, müssen Sie (https://<yourfunctionapp>.scm.azurewebsites.net) öffnen und dann .scm vor dem Domänennamen von azurewebsites.net setzen. Nachdem Sie sich angemeldet haben, können Sie eine Eingabeaufforderung unter dem Menü Debugging-Konsole öffnen, in dem Sie Ihren App-Ordner durchsuchen und einen Unterordner mit dem Namen Lagerplatz erstellen. Sie können Ihre .NET-DLL-Dateien in diesen Lagerplatzordner ziehen und dort ablegen.

Screenshot der Umgebungsseite der Kudu-App

Wenn die .NET-Dateien hochgeladen werden, können Sie sie in Ihrer Azure-Funktion verwenden. Daher müssen Sie die spezielle Syntax #r verwenden. Diese Syntax wird verwendet, um auf externe Assemblys zu verweisen. Im folgenden Beispiel verwendet die Azure-Funktion die .NET-Bibliothek aus dem vorherigen Beispiel.

#r "D:\home\site\wwwroot\ImageConverter\bin\BlackAndWhitePicture.dll"
#r "D:\home\site\wwwroot\ImageConverter\bin\ImageProcessor.dll"

using System.Net;
using System.Net.Http.Headers;
using System.Drawing;
using BlackAndWhitePicture;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    var converter = new BlackAndWhiteConverter();
    return converter.Convert(req);
}