Я вызываю 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. Я сделаю еще несколько исследований, почему я нажимаю этот предел.
Замечание: Вы считали, что можете создать слишком много запросов и просто заблокироваться? – Filburt
Это то, что я изначально думал, что я нажимаю ограничение на запрос, однако я не могу найти документацию о том, что ограничение Microsoft на API-вызовах. –
Исключение NullReferenceException возникает, когда вы пытаетесь использовать элемент нулевой ссылки. Я предлагаю вам отладить приложение, найти строку кода, в которой это происходит, и выполнить ее. –