Beispiel: Dateivorgänge über das Dataverse-SDK für .NET
Dieses Beispiel für .NET 6.0 veranschaulicht, wie Sie Vorgänge mit Dateispalten über das Dataverse-SDK für .NET durchführen.
In diesem Beispiel wird der Microsoft.PowerPlatform.Dataverse.Client.ServiceClient verwendet.
Anforderungen
- Microsoft Visual Studio 2022
- Greifen Sie mit Systemadministrator- oder Systemanpasserberechtigungen auf Dataverse zu.
Wie das Beispiel ausgeführt wird
Klonen Sie das PowerApps-Beispiele-Repository oder laden Sie es herunter.
Öffnen Sie die
PowerApps-Samples\dataverse\orgsvc\C#-NETCore\FileOperations\FileOperations.sln
-Datei mit Visual Studio 2022.Bearbeiten Sie die Datei appsettings.json. Legen Sie Parameter
Url
undUsername
für die Verbindungszeichenfolge fest, die für Ihre Testumgebung geeignet sind.Die Umgebungs-URL befindet sich im Power Platform Admin Center. Er hat die Form https://<environment-name>.crm.dynamics.com.
Erstellen Sie die Lösung, und führen Sie dann das gewünschte Projekt aus.
Wenn das Beispiel ausgeführt wird, werden Sie im Standardbrowser aufgefordert, ein Umgebungsbenutzerkonto auszuwählen und ein Kennwort einzugeben. Um diesen Vorgang nicht bei jeder Ausführung eines Beispiels wiederholen zu müssen, fügen Sie einen Kennwortparameter in die Verbindungszeichenfolge in die Datei „appsettings.json“ ein. Zum Beispiel:
{
"ConnectionStrings": {
"default": "AuthType=OAuth;Url=https://myorg.crm.dynamics.com;Username=someone@myorg.onmicrosoft.com;Password=mypassword;RedirectUri=http://localhost;AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;LoginPrompt=Auto"
}
}
Lesen Sie die folgenden wichtigen Informationen zur Verwendung einer Verbindungszeichenfolge im Anwendungscode.
Wichtig
Microsoft empfiehlt, den sichersten verfügbaren Authentifizierungsflow zu verwenden. Der in diesem Artikel beschriebene Authentifizierungsablauf erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die in anderen Flows nicht vorhanden sind. Sie sollten diesen Flow nur verwenden, wenn andere, sicherere Flows, z. B. verwaltete Identitäten, nicht funktionsfähig sind.
Trinkgeld
Sie können eine Benutzerumgebungsvariable mit dem Namen DATAVERSE_APPSETTINGS auf den Dateipfad der Datei appsettings.json festlegen, die auf Ihrem Computer gespeichert ist. Die Beispiele verwenden diese appsettings-Datei, wenn die Umgebungsvariable vorhanden und nicht Null ist. Achten Sie darauf, sich abzumelden und wieder anzumelden, nachdem Sie die Variable definiert haben, damit sie wirksam wird. Um eine Umgebungsvariable festzulegen, navigieren Sie zu Einstellungen > System > Info, wählen Sie Erweiterte Systemeinstellungen und dann Umgebungsvariablen aus.
Beispielausgabe
Die Ausgabe des Beispiels sollte in etwa so aussehen:
Creating file column named 'sample_FileColumn' on the account table ...
Created file column named 'sample_FileColumn' in the account table.
Created account record with accountid:5fb4f993-7c55-ed11-bba3-000d3a9933c9
Uploading file Files\25mb.pdf ...
Uploaded file Files\25mb.pdf
Downloading file from accounts(5fb4f993-7c55-ed11-bba3-000d3a9933c9)/sample_filecolumn ...
Downloaded the file to E:\GitHub\PowerApps-Samples\dataverse\webapi\C#-NETx\FileOperations\FileOperationsWithActions\bin\Debug\net6.0//downloaded-25mb.pdf.
Deleted the file using FileId.
Deleted the account record.
Deleting the file column named 'sample_filecolumn' on the account table ...
Deleted the file column named 'sample_filecolumn' in the account table.
Veranschaulichung
Der Code füe dieses Beispiel sind in der Datei Program.cs enthalten.
Das Projekt verwendet die Utility
-Klasse, um Vorgänge zum Erstellen oder Abrufen von Schemadaten durchzuführen. Diese Klasse ist in der Datei Utility.cs enthalten.
Dieses Projekt führt diese Vorgänge aus:
Eine Datei erstellen
Mit der Funktion Utility.CreateFileColumn
wire eine Dateispalte mit dem Namen sample_FileColumn
in der Kontotabelle mit einem MaxSizeInKb
-Wert von 10 MB erstellt.
Eine Dateispalte aktualisieren
Mit der Funktion Utility.UpdateFileColumnMaxSizeInKB
wird der MaxSizeInKb
-Wert der Datei sample_FileColumn
auf 100 MB aktualisiert.
Tipp : Wenn Sie einige Fehlerszenarien erstellen möchten, da die Dateispaltengröße zu klein ist, kommentieren Sie diese Zeile aus.
Den MaxSizeInKb-Wert der Dateispalte abrufen
Mit Utility.GetFileColumnMaxSizeInKb
wird der MaxSizeInKb
-Wert der sample_FileColumn
-Dateispalte abgerufen und in einer Variablen mit dem Namen fileColumnMaxSizeInKb
gespeichert.
Firmendatensatz erstellen
Bevor eine Datei in die Dateispalte hochgeladen werden kann, muss ein Datensatz vorhanden sein.
Hochladen einer Datei
Um eine PDF-Datei mit dem Namen 25MB.pdf
in die sample_FileColumn
-Dateispalte des Kontodatensatzes hochzuladen, verwendet dieses Beispiel eine statische UploadFile
-Methode, die alle Parameter akzeptiert, die für die folgenden Anforderungen erforderlich sind:
- Den Upload mit der InitializeFileBlocksUploadRequest-Klasse initialisieren
- Verarbeiten Sie die Antwort mit der InitializeFileBlocksUploadResponse-Klasse, um den FileContinuationToken abzurufen, der in allen folgenden Anforderungen verwendet wird.
- Die
UploadFile
-Methode akzeptiert einen Parameter mit dem NamenfileColumnMaxSizeInKb
und verwendet diesen Wert, um die Größe der Datei zu testen. Wenn die Datei größer als der konfigurierte Grenzwert für die Dateispalte ist, wird ein Fehler ausgegeben. - Teilen Sie die Datei in 4-MB-Blöcke auf, und senden Sie jeden Block mit der UploadBlockRequest-Klasse. Jede Instanz muss eine base64-codierte Zeichenfolge enthalten, um den Block eindeutig zu identifizieren. Diese Anforderung hat keinen zu verarbeitenden Antwortwert.
- Nachdem alle Blöcke gesendet wurden, verwenden Sie die CommitFileBlocksUploadRequest-Klasse mit einem Array der base64-codierten Zeichenfolgenwerte, um den Vorgang abzuschließen.
- Verarbeiten Sie die Antwort mit der CommitFileBlocksUploadResponse-Klasse, um den
FileId
-Wert abzurufen, der zum Löschen der Datei verwendet wird.
Datei herunterladen
Um die gerade in die sample_FileColumn
-Dateispalte des Kontodatensatzes hochgeladene PDF-Datei mit dem Namen 25MB.pdf
herunterzuladen, verwendet dieses Beispiel eine statische DownloadFile
-Methode, die alle Parameter akzeptiert, die für die folgenden Anforderungen erforderlich sind:
- Den Download mit der InitializeFileBlocksDownloadRequest-Klasse initialisieren, wenn die Datei erfolgreich hochgeladen wurde
- Verarbeiten Sie die Antwort mit der InitializeFileBlocksDownloadResponse-Klasse, um den
FileContinuationToken
abzurufen, der in allen folgenden Anforderungen verwendet wird. - Instanziieren Sie eine
List<byte>
-Variable, um die Teile der Datei beim Herunterladen zu erfassen. - Laden Sie die Datei in 4-MB-Blöcken mit mehreren Anforderungen mit der DownloadBlockRequest-Klasse herunter.
- Verarbeiten Sie jede Antwort mit der DownloadBlockResponse-Klasse, um das Teil-
byte[]
von derData
-Eigenschaft abzurufen. Fügen Sie diesen Teil demList<byte>
hinzu. - Nachdem alle Blöcke empfangen wurden, geben Sie das
List<byte>
als Array zurück. - Die Datei wird im aktuellen Verzeichnis gespeichert. Sie können versuchen, die Datei zu öffnen, um zu bestätigen, dass sie korrekt hoch- und heruntergeladen wurde.
Die Datei löschen
Wenn die Datei erfolgreich hochgeladen wurde, verwenden Sie die DeleteFileRequest-Klasse, um die Datei mit dem FileId
-Wert zu löschen, der von CommitFileBlocksUploadResponse
zurückgegeben wurde. Diese Anforderung hat keinen zu verarbeitenden Antwortwert.
Bereinigung
Um das System im Zustand vor der Ausführung des Beispiels zu belassen, bevor die Probe ausgeführt wurde, werden folgende Schritte ausgeführt:
- Firmendatensatz löschen
- Dateispalten löschen
Siehe auch
Dateispaltendaten verwenden
Beispiel: Dateivorgänge über die Dataverse-API
Bildspaltendaten verwenden
Beispiel: Bildvorgänge über das Dataverse-SDK für .NET