Microsoft Graph:"Request_ResourceNotFound" 对比 "ResourceNotFound" 对比 "ErrorItemNotFound" 对比 "ItemNotFound"

Microsoft Graph: "Request_ResourceNotFound" vs. "ResourceNotFound" vs. "ErrorItemNotFound" vs. "ItemNotFound"

我们的应用程序 "syncs" 用户数据从 AzureAD 到我们的数据库,我注意到一些请求失败并出现以下错误:

Code: Request_ResourceNotFound Message: Resource 'S-1-5-21-2428866552-2013070483-421003753-10106' does not exist or one of its queried reference-property objects are not present.

错误本身是有道理的,因为这个条目不是我们 Azure AD 的一部分。

为了确保正确的错误处理,我研究了文档并感到困惑:Request_ResourceNotFound 记录在哪里?代码本身未在 Graph Docs and I found quite a few different Whosebug questions or GitHub issues with "similar", but different error codes, e.g. error code "ResourceNotFound" or here or here and then I found this Whosebug questions 中列出,它捕获了很多类似的错误代码:

  switch (e.Error.Code)
                    {
                        case "Request_ResourceNotFound":
                        case "ResourceNotFound":
                        case "ErrorItemNotFound":
                        //case "itemNotFound":
                        //    return JsonConvert.SerializeObject(new { Message = $"User '{email}' was not found." }, Formatting.Indented);
                        ...
                    }

.NET SDK 还列出了一些错误代码,但是 Request_ResourceNotFound 不知何故丢失了。

我知道 Graph 是不同产品的保护伞,但是否有一些一般错误代码或(对于用户)哪个是 "user not found" 的 "correct" 错误代码?

HTTP 具有 "not found" 的标准错误代码。我建议使用

e.StatusCode == System.Net.HttpStatusCode.NotFound

然后就不会乱了。如果您对特定的已知错误代码有特殊处理,则检查该代码作为二次测试。这避免了需要测试代码的所有可能性。