Microsoft Graph API вызывает зависание бесконечно - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь запросить информацию о пользователе через Microsoft Graph. Я могу хорошо аутентифицироваться, но когда я пытаюсь запросить информацию о пользователе graphServiceClient.Users, мое приложение зависает на неопределенный срок: нет тайм-аута, нет ошибки, просто зависает. Я нашел этот пост однако предложения там не помогли мне.

Вот мой код:

public bool GetUserByUniqueID(string uid, out GraphUser user)
{
    bool ret = false;
    user = new GraphUser();
    if (Authenticate(out AuthToken token))
    {
        GraphServiceClient graphServiceClient = GetGraphServiceClient(token);
        // The below code hangs indefinitely
        User graphUser = graphServiceClient.Users[uid].Request()
            .Select("id,displayName,userPrincipalName,userType,accountEnabled").GetAsync().GetAwaiter()
            .GetResult();
        if (graphUser != null)
        {
            user.ID = graphUser.Id;
            user.DisplayName = graphUser.DisplayName;
            user.PrincipalName = graphUser.UserPrincipalName;
            user.UserType = graphUser.UserType;
            user.AccountEnabled = graphUser.AccountEnabled ?? false;
            user.MemberOf = GetMemberOf(token, graphUser.Id);
            ret = true;
        }
    }
    return ret;
}

private bool Authenticate(out AuthToken token)
{
    bool ret = false;
    token = new AuthToken();
    string url = $"https://login.microsoftonline.com/{_tenant}/oauth2/v2.0/token";
    RestClient client = new RestClient(url);
    RestRequest request = new RestRequest(Method.POST);
    request.Parameters.Add(new Parameter("grant_type", _grantType, ParameterType.GetOrPost));
    request.Parameters.Add(new Parameter("scope", _scope, ParameterType.GetOrPost));
    request.Parameters.Add(new Parameter("client_secret", _clientSecret, ParameterType.GetOrPost));
    request.Parameters.Add(new Parameter("client_id", _clientId, ParameterType.GetOrPost));
    IRestResponse response = client.Execute<AuthToken>(request);
    if (response.StatusCode == HttpStatusCode.OK)
    {
        token = JsonConvert.DeserializeObject<AuthToken>(response.Content);
        ret = true;
    }
    return ret;
}

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

У меня такая же проблема с пакетом NPM Graph API.Возврат к простой старой просьбе-обещанию.Теперь он не застрял, но не всегда находит членов группы.Использование бета-версии API отлично работает

0 голосов
/ 02 мая 2019

Я исправил проблему, вернувшись к предыдущей версии Microsoft.Graph и Microsoft.Graph.Core.Я использовал версию 1.14.0, а теперь я использую 1.12.0..GetAwaiter().GetResult() сломан в 1.14.0 текущего выпуска (1.15.0).

...