Migrieren der .NET-Clientbibliothek zu Microsoft Graph
Dieser Artikel ist Teil von Schritt 3: Überprüfen der App-Details des Prozesses zum Migrieren von Apps.
Wenn Ihre App derzeit die Azure Active Directory (Azure AD) Graph Clientbibliothek verwendet, wechseln Sie zur Microsoft Graph .NET-Clientbibliothek.
HINWEIS: Die .NET-Clientbibliothek von Microsoft Graph wird nur für .NET Framework 4.5 und .NET Standard 1.1 unterstützt. Die neuesten Supportinformationen finden Sie in der .NET-Clientbibliothek von Microsoft Graph.
Hier sehen wir uns einige allgemeine Schritte zur Migration zur .NET-Clientbibliothek von Microsoft Graph an:
- Erstellen eines Microsoft Graph-Clients mit einem Zugriffstoken (das Sie entweder mithilfe Azure Active Directory Authentifizierungsbibliothek (ADAL) oder der Microsoft-Authentifizierungsbibliothek (MSAL) erwerben können)
- So formulieren Sie Anforderungen
- Verwenden von Abfrage-Generatoren
- Behandeln von Sammlungen und Paging
Übersicht über die Migrationsschritte
Bei den folgenden Schritten wird davon ausgegangen, dass Ihre App bereits ADAL verwendet, um Zugriffstoken zum Aufrufen von Azure AD Graph zu erwerben, und dass Sie vorerst weiterhin ADAL verwenden. Der Wechsel zu MSAL kann als separater Schritt erfolgen, der bei der Migration zu MSALbeschrieben wird.
Um ein Zugriffstoken für Microsoft Graph zu erhalten, aktualisieren Sie resourceUrl von
https://graph.windows.net
aufhttps://graph.microsoft.com
.Aktualisieren Sie in Ihrer App Verweise auf die Microsoft Graph-Clientbibliothek, indem Sie Folgendes ändern:
using Microsoft.Azure.ActiveDirectory.GraphClient;
An:
using Microsoft.Graph;
Verwenden Sie Ihren Paket-Manager, um die Microsoft Graph NuGet Paket- und Updateabhängigkeiten herunterzuladen und zu aktualisieren.
Aktualisieren Sie den Clientkonstruktor so, dass anstelle von
GraphServiceClient
ActiveDirectoryClient
. In den folgenden Codeausschnitten wird davon ausgegangen, dass Ihre App dieAcquireTokenAsyncForUser()
Methode zum Abrufen neuer Token verwendet. Eine Definition für diese Methode finden Sie im Beispiel für active-directory-dotnet-graphapi-console.Veränderung:
ActiveDirectoryClient client = new ActiveDirectoryClient(serviceRoot, async () => await AcquireTokenAsyncForUser());
An:
GraphServiceClient graphClient = new GraphServiceClient(serviceRoot, new DelegateAuthenticationProvider(async (requestMessage) => { var token = await AcquireTokenAsyncForUser(); requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token); }));
Für Microsoft Graph Clientbibliothek enthält der
serviceRoot
Wert auch die Versionsnummer. Derzeit ist dieser Werthttps://graph.microsoft.com/v1.0
.Aktualisieren Sie Anforderungen, um die Syntax des Microsoft Graph Clientanforderungs-Generators zu verwenden, indem Sie Folgendes ändern:
signedInUser = (User)await client.Me.ExecuteAsync();
An:
signedInUser = (User)await client.Me.Request().GetAsync();
Hinweis
Die Azure AD Graph Clientbibliothek unterstützte LINQ-basierte Abfragesyntax. Die Clientbibliothek von Microsoft Graph jedoch nicht. Daher müssen Sie die relevanten Abfragen in einen RESTful-Ausdruck konvertieren.
Ändern Sie hierzu Folgendes:
var groups = await client.Groups.Where(g => g.DisplayName.StartsWith("a")).ExecuteAsync();
An:
var groups = await client.Groups.Request().Filter("startswith(displayName,'a')").GetAsync();
Wenn Ihr Code Auflistungen durchblättert, nehmen Sie die folgenden geringfügigen Anpassungen vor. Das folgende Beispiel vergleicht und kontrastiert das Abrufen einer Gruppe und das Paging durch ihre Mitglieder, jeweils 5. Während der Code für Azure AD Graph ein Fetcher-Konstrukt erfordert, um die Mitglieder einer Gruppe abzurufen, hat Microsoft Graph keine solche Anforderung. Ansonsten ist der Code relativ ähnlich. Um präzise zu sein, werden nur Benutzermitglieder angezeigt, try/catch und Fehlerbedingungen werden nicht angezeigt, und die Codeausschnitte gelten für eine Konsolen-App mit einem einzigen Thread.
Ändern Sie beispielsweise den folgenden Code mithilfe der Azure AD Graph .NET-Clientbibliothek:
Group retrievedGroup = client.Groups. Where(g => g.ObjectId.Equals(id)).ExecuteAsync().Result; IGroupFetcher retrievedGroupFetcher = (IGroupFetcher) retrievedGroup; var membersPage = retrievedGroupFetcher.Members.Take(5).ExecuteAsync().Result; Console.WriteLine(" Members:"); do { List<IDirectoryObject> members = membersPage.CurrentPage.ToList(); foreach (IDirectoryObject member in members) { if (member is User) { User memberUser = (User)member; Console.WriteLine(" User: {0} ", memberUser.DisplayName); } } membersPage = membersPage.GetNextPageAsync().Result; } while (membersPage != null);
Zum folgenden Code mithilfe der .NET-Clientbibliothek von Microsoft Graph:
var membersPage = client.Groups[id].Members.Request().Top(5).GetAsync().Result; Console.WriteLine(" Members:"); do { List<DirectoryObject> members = membersPage.CurrentPage.ToList(); foreach (DirectoryObject member in members) { if (member is User) { User memberUser = (User)member; Console.WriteLine(" User: {0} ", memberUser.DisplayName); } } if (membersPage.NextPageRequest != null) membersPage = membersPage.NextPageRequest.GetAsync().Result; else membersPage = null; } while (membersPage != null);
Erstellen und beheben Sie alle Ressourcen-, Eigenschafts-, Navigations- und Dienstaktionsfehler, die sich im Allgemeinen auf Namensänderungen beziehen.
Siehe auch
Die C#-Konsolenausschnitt-App hebt mehr der Unterschiede zwischen Microsoft Graph Clientbibliothek und Azure AD Graph Clientbibliothek hervor.
Die Azure AD Graph Clientbibliothek unterstützt nur die .NET-Plattform. Microsoft Graph-Clientbibliothek unterstützt jedoch zusätzliche Plattformen und Sprachen, die für Ihre Lösungen möglicherweise nützlicher sind.
Nächste Schritte
- Erfahren Sie, wie Sie Apps, die Sie zu Microsoft Graph migriert haben, bereitstellen, testen und erweitern.
- Überprüfen Sie die Prüfliste erneut.
Feedback
Feedback senden und anzeigen für