0

Я вызываю graph.windows.net, чтобы сделать вызов api, который возвращается как JSON, но он работает, однако, через случайный период времени Массив JSON возвращается как NULL и сбой моего приложения, которое можно восстановить после повторной публикации через визуальную студию.Ссылка на объект не установлена ​​в экземпляр объекта из API-интерфейса Microsoft Graph Call

[Authorize] 
    public async Task<Dictionary<string,string>> UserApps() 
    { 

     string tenantId = ClaimsPrincipal.Current.FindFirst(TenantIdClaimType).Value; 

     // Get a token for calling the Windows Azure Active Directory Graph 
     AuthenticationContext authContext = new AuthenticationContext(String.Format(CultureInfo.InvariantCulture, LoginUrl, tenantId)); 
     ClientCredential credential = new ClientCredential(AppPrincipalId, AppKey); 
     AuthenticationResult assertionCredential = authContext.AcquireToken(GraphUrl, credential); 

     string authHeader = assertionCredential.CreateAuthorizationHeader(); 
     string requestUrl = String.Format(
      CultureInfo.InvariantCulture, 
      GraphApplicationsUrl, 
      HttpUtility.UrlEncode(tenantId), 
      HttpUtility.UrlEncode(User.Identity.Name)); 

     HttpClient client = new HttpClient(); 
     HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); 
     request.Headers.TryAddWithoutValidation("Authorization", authHeader); 
     HttpResponseMessage response = await client.SendAsync(request); 
     string responseString = await response.Content.ReadAsStringAsync(); 
     JObject responseObject = JObject.Parse(responseString); 
     JArray jsonArray = (JArray)responseObject["value"]; 


     Dictionary<string, string> apps = new Dictionary<string, string>(); 


     if (jsonArray != null && jsonArray.Count > 0) 
     { 

      foreach (JObject s in jsonArray) 
      { 
       if (!apps.ContainsKey(s["resourceDisplayName"].ToString())) 
       { 
       apps.Add(s["resourceDisplayName"].ToString(), s["resourceId"].ToString()); 

      } 

     } 
     else 
     { 
      //Console.WriteLine(jsonArray.ToString()); 
     } 



     return apps; 
    } 
    ` 

EDIT: Я считаю, что @Filburt правильно и что это касается ограничения запросов к API. Я сделаю еще несколько исследований, почему я нажимаю этот предел.

+0

Замечание: Вы считали, что можете создать слишком много запросов и просто заблокироваться? – Filburt

+0

Это то, что я изначально думал, что я нажимаю ограничение на запрос, однако я не могу найти документацию о том, что ограничение Microsoft на API-вызовах. –

+0

Исключение NullReferenceException возникает, когда вы пытаетесь использовать элемент нулевой ссылки. Я предлагаю вам отладить приложение, найти строку кода, в которой это происходит, и выполнить ее. –

ответ

0

Проблема заключается в том, что мой токен аутентификации истекает. Я просто нуждался в повторной аутентификации, и это решило мою проблему.