c# - 如何查找所有可能的 AdalException.ErrorCode 字符串属性值?

标签 c# azure exception azure-active-directory adal

当您尝试从 Azure Active Directory 获取 token 时,如果在 token 获取过程中发生错误,则会引发异常类型。

该异常称为 AdalException ms docs link here

我正在寻找名为ErrorCode的属性ms docs link here

但是他们称之为“错误代码”,它是一个带有可能值的字符串,例如:

  • 暂时不可用
  • user_interaction_required
  • 等等...

从查看程序集得知

// Parameters:
//   errorCode:
//     The error code returned by the service or generated by client. This is the code
//     you can rely on for exception handling.

你能给我指出一个方向,我可以从中获得所有可能的值吗?或者它的值(value)只是信息性的、唯一的或随机的?

我想做的是有一个不同的逻辑,所以假设它暂时不可用,是否重试?如果是其他事情,请采取相应行动...

伪代码:

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...
}

最佳答案

Exceptions in ADAL.NET wiki涵盖了很多这个细节。

要处理的最重要的错误/异常是 AdalSilentTokenAcquistionException,其中缓存中的 token 不再有效,需要以交互方式刷新。

我强烈建议为 interaction_required 构建一个强大的错误处理程序(在 ADAL.NET 中,这是一个 AdalClaimsChallengeException ,它可能因条件访问而发生需要对 AcquireTokenSilent() 方法进行额外授权的策略。在这种情况下,如果您可以提示用户,则只需以交互方式重复失败的请求即可。如果您的应用无法显示交互,则您可以捕获错误中的claims参数并将其发送回客户端重新授权。

关于c# - 如何查找所有可能的 AdalException.ErrorCode 字符串属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52724552/

相关文章:

c# - 我需要一个具有继承性的构造函数吗?

c# - 扩展页面类

Azure API 管理直通到后端服务

正在拆分的 Python 用户定义的异常字符串

c# - Entity Framework Core DbContext.SaveChanges 抛出 System.InvalidCastException : Unable to cast object of type System. bool 值以键入 System.Int16

c# - 如何通过套接字发送外部库的可序列化对象?

c# - 使用全局热键 : Get key that was actually pressed

azure - SQL Azure 数据库给出 "The server could not retrieve metrics (Internal Server Error)."消息

ios - Azure 表插入中传入值的递增值

c - 程序 [X] 已触发断点,释放堆 block [A] 后在 [B] 处进行了修改