【问题标题】:.NETCORE 2.0 AcquireTokenAsync throwing AdalServiceException: TaskCanceledException.NETCORE 2.0 AcquireTokenAsync 抛出 AdalServiceException:TaskCanceledException
【发布时间】:2019-01-16 12:36:48
【问题描述】:

我正在使用下面的代码在 .DOTNET 核心 2.0 上使用 3.16 版本的 ADAL 库获取 AAD 令牌,并在 1 分钟后始终获得 TaskCancelledException。即使在重试时也会发生这种情况。

var authenticationContext = new AuthenticationContext(auth);
if (authenticationContext == null)
throw (new ArgumentNullException("AuthenticationContext")); authenticationContext.TokenCache.Clear();
ClientAssertionCertificate clientAssertion = new ClientAssertionCertificate(clientId, certificate);

AuthenticationResult authenticationResult = authenticationContext.AcquireTokenAsync(audience, clientAssertion).Result;

System.AggregateException:发生一个或多个错误。 (未知错误:未知错误)---> Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException:未知错误:未知错误---> System.Threading.Tasks.TaskCanceledException:任务被取消。 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult() 在 System.Net.Http.HttpClient.d__58.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪---在 System.Runtime。 ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在 Microsoft.IdentityModel.Clients.ActiveDirectory.HttpClientWrapper.d__30.MoveNext( ) --- 内部异常堆栈跟踪结束 --- 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AdalHttpClient.d__211.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AdalHttpClient.d__211.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime。 Microsoft.IdentityModel.Clients.ActiveDirectory.AdalHttpClient.d__201.MoveNext() 处的 CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.d__67.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.d__64.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.d__55.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.d__51.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.d__27.MoveNext() --- 内部异常堆栈跟踪结束 --- 在 System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotification) 在 C:\Users\risraj\source\repos\TestAADCallsForLinux\TestAADCallsForLinux\Program.cs:line 87 中的 TestAADCallsForLinux.Program.FetchAADToken(String registeredObjectInfo) ---> (内部异常#0)Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException:unknown_error:未知错误---> System.Threading.Tasks.TaskCanceledException:任务被取消。在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult() 在 System.Net.Http.HttpClient.d__58.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.HttpClientWrapper.d__30.MoveNext() --- 内部异常堆栈跟踪结束 --- 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AdalHttpClient.d__211.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime。 Microsoft.IdentityModel.Clients.ActiveDirectory.AdalHttpClient.d__211.MoveNext() 处的 CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AdalHttpClient.d__20`1.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.d__67.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.d__64.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.d__55.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.d__51.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.d__27.MoveNext() 错误代码:unknown_error 状态码:0

【问题讨论】:

    标签: .net-core adal


    【解决方案1】:

    可能是线程问题...您需要使用 async/await 模式,否则会遇到多线程问题。请参阅wiki 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 2019-05-30
      • 2016-10-26
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多