Die Skriptklasse erstellen

Abgeschlossen

In dieser Lerneinheit erfahren Sie, wie Sie Ihre C#-Skriptklasse erstellen, um Ihre Transformationslogik zu implementieren.

Benutzerdefinierter Code, der mit einem Konnektor verwendet wird, muss die folgenden Anforderungen erfüllen:

  • Der Name der Klasse muss Script sein.

  • Die Skriptklasse muss ScriptBase implementieren.

  • Die Skriptklasse muss eine Methode mit dem Namen ExecuteAsync implementieren.

  • Die Ausführung des benutzerdefinierten Codes muss weniger als fünf Sekunden dauern.

  • Der benutzerdefinierte Code muss insgesamt weniger als 1 MB groß sein.

  • Es wird nur eine Skriptdatei oder ‑klasse unterstützt.

ScriptBase entdecken

ScriptBase ist eine Klasse, die die benutzerdefinierte Konnektor-Infrastruktur mit unterstützenden Hilfsmethoden und Schnittstellen bereitstellt. Ihre Script-Klasse muss diese abstrakte Klasse als Basisklasse nutzen.

public class Script : ScriptBase
{
    public override Task<HttpResponseMessage> ExecuteAsync()
    {
        // Your code here
    }
}

Zusätzlich zur Methode ExecuteAsync hat diese Klasse auch die Helfermethode CreateJsonContent, die Sie verwenden, um ein Objekt StringContent aus der serialisierten JSON zu erstellen. Im folgenden Code füllt beispielsweise die Hilfsmethode CreateJsonContentresponse.Content aus der transformierten Antwort aus, die erstellt wurde.

// Wrap the original JSON object into a new JSON object with just one key ('wrapped')
var newResult = new JObject
{
    ["wrapped"] = result,
};
      
    response.Content = CreateJsonContent(newResult.ToString());

Die Klasse ScriptBase stellt zudem eine Eigenschaft CancellationToken bereit. Sie verwenden die Eigenschaft CancellationToken, wenn Sie Anrufe mit SendAsync tätigen. Die Methode signalisiert das ihr übergebene CancellationToken, wenn die Anfrage zu lange dauert oder eine Stornierung angefordert wird.

Die Klasse ScriptBase verfügt zudem über eine öffentliche Eigenschaft Context, die Ihrer Logik zur Verfügung steht, um Kontext für die Anfrage bereitzustellen, die sich in Bearbeitung befindet. Die Eigenschaft Context ist vom Typ IScriptContext und verfügt über die folgenden hilfreichen Eigenschaften und Methoden:

  • OperationId – Diese Eigenschaft ist am hilfreichsten, wenn Sie identifizieren müssen, welcher Vorgang verarbeitet wird, damit Ihre Logik die richtigen Transformationen bereitstellen kann.

  • Anforderung – Diese Methode ist die HttpRequestMessage für den Vorgang, der verarbeitet wird. Wenn Sie die Anfrage transformieren müssen, ändern Sie diese Methode und übergeben sie dann an SendAsync, um die Anfrage an den Service zu senden.

  • Logger – Diese Methode stellt Ihnen eine Instanz eines ILogger zur Verfügung, den Sie zum Protokollieren von Diagnoseinformationen aus Ihrem Code in den Codeprotokollen für Konnektorvorgänge verwenden können.

  • SendAsync – Mit dieser Eigenschaft können Sie eine HTTP-Anfrage an den Server senden. Verwenden Sie diese Methode, anstatt Ihren eigenen HttpClient.SendAsync-Aufruf durchzuführen.

Ihren Code lokal kompilieren

Sie können Kompilierungsprobleme leichter erkennen, wenn Sie Ihren Code lokal kompilieren. Sie müssen ein Projekt auf Ihrem lokalen Computer erstellen und dann Dateien für die Klasse ScriptBase und die Schnittstelle IScriptContext erstellen, um Ihren Code lokal zu kompilieren. Sie kopieren den Code für diese Dateien aus der Dokumentation Definition unterstützender Klassen und Schnittstellen.

Das Open-Source-Projekt Microsoft/MTC_CustomConnectorCodeProject auf GitHub kann auch für die lokale Entwicklung nützlich sein. Dieses Projekt stellt eine Konsolenprojektvoreinstellung für die Entwicklung von benutzerdefinierten Codes bereit.

Unterstützte Namespaces

Der benutzerdefinierte Code, der von ihnen implementiert wurde, ist auf eine Reihe unterstützter Namespaces beschränkt. Bei diesen Namespaces handelt es sich größtenteils um eine Sammlung gängiger System.*-Namespaces, einschließlich Protokollierung und Newtonsoft JSON, um die Logik in Ihrem benutzerdefinierten Code zu unterstützen. Eine vollständige Liste der Namespaces, die aktuell unterstützt werden, finden Sie unter Unterstützte Namespaces.

Zudem verweist Ihr benutzerdefinierter Code möglicherweise nicht auf andere .NET-Assemblys und ist daher auf die Logik beschränkt, die Sie in Ihr hochgeladenes Skript einfügen.

Andere Beispiele für benutzerdefinierten Code

Durchsuchen Sie die Beispiele von veröffentlichten Microsoft Power Platform-Konnektoren, um mehr über die unterschiedlichen Transformationsarten zu erfahren, die Sie mit benutzerdefiniertem Code durchführen. Sie können von Suche nach ScriptBase auf dem öffentlichen Repository PowerPlatformConnectors die aktuellen Konnektoren anzeigen, die benutzerdefinierten Code implementieren.