Итак, у меня есть этот фрагмент кода, который получает токен из Azure Active Directory.Когда этот бит запускается в первый раз после запуска сервера, он падает с исключением нулевой ссылки.Происходящее исключение записывается в окне вывода, но само исключение не перехватывается моим кодом.
Когда я использую отладчик для просмотра этого кода, он просто не продолжается после AcquireTokenAsync - он заканчивается там, с исключением, записанным в выводе, но он не перехватывается моим try / catch, и нет никакого способа восстановить.
Здесь нет ничего, что является нулевым, поэтому я немного затрудняюсь объяснить, особенно почему это происходит только один раз после перезапуска сервера.
Код
private static async Task<string> getToken()
{
string aadInstance = ConfigurationManager.AppSettings["Authority"];
string tenant = ConfigurationManager.AppSettings["Tenant"];
string clientId = ConfigurationManager.AppSettings["ClientId"];
string clientSecret = ConfigurationManager.AppSettings["ClientSecret"];
string resource = ConfigurationManager.AppSettings["GraphResourceUri"];
string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
AuthenticationContext authContext = new AuthenticationContext(authority);
ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
try
{
AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCredential);
//anything past here never runs
return result.AccessToken;
}
catch (Exception ex)
{
Debug.WriteLine(ex.StackTrace);
}
return "";
}
Редактировать:
Хорошо, у меня есть трассировка стека после работы с параметрами исключения: StackTrace "в System.Web.ThreadContext.AssociateWithCurrentThread (Boolean setImpersonationContext) "