2017-07-19 1 views
0

Ich versuche, ein Beispiel für Delta-Abfrage mit der .NET-Client-Bibliothek (Version 1.4 von https://www.nuget.org/packages/Microsoft.Graph) einzurichten. die ersten Anrufe zu tun, ist glatt:Delta Abfrage mit dem Microsoft Graph SDK 1.4 NuGet

var page = await _graphClient.Users.Delta().Request().GetAsync(); 

while (page.NextPageRequest != null) 
{ 
    page = await page.NextPageRequest.GetAsync(); 
} 

gibt es den Deltalink nach dem, während immer noch ziemlich offensichtlich ist:

string deltaLink = (string)page.AdditionalData["@odata.deltaLink"]; 

Aber was ist der richtige Weg, später diesen Deltalink zu benutzen? Ich habe die offensichtliche Methode/den Builder nicht gefunden, die es mir zu einem späteren Zeitpunkt ermöglichen würde, die URL zu verwenden (meine aktuelle Lösung ist Code aus Abschnitt "Senden von HTTP-Anforderungen mit der .NET Microsoft Graph-Client-Bibliothek" unter https://github.com/microsoftgraph/msgraph-sdk-dotnet/blob/dev/docs/overview.md und Wirf das Ding auf UserDeltaCollectionResponse - an diesem Punkt kann ich wieder die normalen APIs benutzen.

Antwort

1

Sie haben Recht; Derzeit gibt es keine elegante Möglichkeit, den Deltalink als Basis für eine neue Anfrage zu verwenden. Sie müssen es selbst und erstellen Sie eine benutzerdefinierte HTTP-Anforderung speichern:

HttpRequestMessage hrm = new HttpRequestMessage(HttpMethod.Get, deltaLink); 
await graphClient.AuthenticationProvider.AuthenticateRequestAsync(hrm); 
HttpResponseMessage response = await graphClient.HttpProvider.SendAsync(hrm); 

Wenn Sie schauen, um es innerhalb derselben Anwendungsinstanz wieder zu verwenden, können Sie es verwenden leicht:

driveItemDeltaCollectionPage.InitializeNextPageRequest(graphClient, deltaLink.ToString()); 
driveItemDeltaCollectionPage = await driveItemDeltaCollectionPage.NextPageRequest.GetAsync(); 

Es ist derzeit ein open issue auf dieser Bibliothek, um mehr intuitive Unterstützung für Delta-Links hinzuzufügen.