当您尝试从Azure Active Directory获取令牌时,在令牌获取期间发生错误时会引发异常类型。
该异常称为 AdalException ms docs link here
我追求的属性是 ErrorCode ms docs link here
但是他们称其为“错误代码”,它是一个带有可能值的字符串,例如:
从窥视程序集说
// Parameters:
// errorCode:
// The error code returned by the service or generated by client. This is the code
// you can rely on for exception handling.
您能指出我可以从中获得所有可能值的方向吗?还是它的价值仅仅是信息性的,唯一的或随机的?
我想做的是使用不同的逻辑,所以如果它暂时不可用,可以重试吗?如果还有其他事情,请采取相应措施...
伪代码:
catch (AdalException ex)
{
if (ex.ErrorCode == "temporarily_unavailable")
{
retry = true;
retryCount++;
Thread.Sleep(3000);
}
else if (ex.ErrorCode == "foo")
// rest of the code omitted for brevity...
}
答案 0 :(得分:1)
在左侧层次结构的此链接下,点击AdalError>字段的下拉菜单,它应该显示所有可能性。
答案 1 :(得分:1)
Exceptions in ADAL.NET wiki涵盖了很多此类细节。
要处理的最重要的错误/异常是AdalSilentTokenAcquistionException
,其中缓存中的令牌不再有效,需要交互刷新。
我强烈建议您为interaction_required
构建一个健壮的错误处理程序(在ADAL.NET中,这是一个AdalClaimsChallengeException
,这是由于条件访问策略要求对{ {1}}方法,在这种情况下,如果您可以提示用户,则只需要交互地重复失败的请求即可;如果您的应用无法显示交互,则可以在其中捕获AcquireTokenSilent()
参数错误,然后将其发送回客户端以重新授权。