2017-03-07 4 views
0

Ich versuche, Benutzergruppen Informationen von Azure Active Directory unter Verwendung von Code-Schnipsel zu erhalten.Ich kann keine Benutzergruppen von Azure Active Directory abrufen.

public async Task<List<string>> GetUserGroupsAsync(string alias) 
{ 
      var groupList = new List<string>(); 
      try 
      { 
       Microsoft.Azure.ActiveDirectory.GraphClient.IUser userObject = getUserObject(alias); 
       Task t = Task.Run(async() => 
       { 
        var grouppages = await ((IUserFetcher)userObject).MemberOf.OfType<Microsoft.Azure.ActiveDirectory.GraphClient.Group>().ExecuteAsync(); 
        do 
        { 
         groupList.AddRange(grouppages.CurrentPage.Select(g => g.Mail != null ? g.Mail.Trim() : null).Where(eMail => !string.IsNullOrWhiteSpace(eMail)).ToList()); 
         grouppages = await grouppages.GetNextPageAsync(); 
        } while (grouppages != null); 
       }); 
       t.Wait(); 
      } 
      catch 
      { 
       throw; 
      } 
      return groupList; 
} 

Problem: ich unten Ausnahme bin immer einige Benutzer für .

System.AggregateException: One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> Microsoft.Data.OData.ODataErrorException: The specified page token value has expired and can no longer be included in your request. ---> System.Data.Services.Client.DataServiceQueryException: An error occurred while processing this request. ---> System.Data.Services.Client.DataServiceClientException: {"odata.error":{"code":"Directory_ExpiredPageToken","message":{"lang":"en","value":"The specified page token value has expired and can no longer be included in your request."}}} 
    at System.Data.Services.Client.BaseAsyncResult.EndExecute[T](Object source, String method, IAsyncResult asyncResult) 
    at System.Data.Services.Client.QueryResult.EndExecuteQuery[TElement](Object source, String method, IAsyncResult asyncResult) 
    --- End of inner exception stack trace --- 
    at System.Data.Services.Client.QueryResult.EndExecuteQuery[TElement](Object source, String method, IAsyncResult asyncResult) 
    at System.Data.Services.Client.DataServiceRequest.EndExecute[TElement](Object source, DataServiceContext context, String method, IAsyncResult asyncResult) 
    at System.Data.Services.Client.DataServiceContext.EndExecute[TElement](IAsyncResult asyncResult) 
    at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<ExecuteAsync>b__6b[TSource,TInterface](IAsyncResult i) 
    at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 

Bitte helfen Sie bei der Lösung dieses Problems. Es wird sehr hilfreich sein.

+0

Ist die Fehlermeldung nicht offensichtlich genug? Ihr Zugriffstoken ist abgelaufen. Btw, sollten Sie 'getUserObject' Funktion sowie –

Antwort

0

Nach meinem Verständnis wird die Ausnahme (The specified page token value has expired and can no longer be included in your request.) auftreten, wenn wir versuchen, die Mitglieder der Gruppe Seite für Seite abrufen, aber gleichzeitig andere Gruppenmitglieder wie Hinzufügen oder Löschen manipulieren.

Wir müssen diese Ausnahme im Code behandeln. Zum Beispiel können wir die Benutzer und Informationsbenutzer benachrichtigen, dass sie versuchen, die Mitglieder zu holen, nachdem wir diese Ausnahme erhalten haben.

+0

jedes Update zu diesem Thema? Wir fangen gerade an, dieses Problem zu erfahren. –

Verwandte Themen