C# 订阅验证错误处理
我目前正在尝试使用Graph SDK处理无法及时验证订阅请求的异常。不幸的是,我真的不知道如何实现这一点。未及时验证订阅时引发的异常为: Microsoft.Graph.ServiceException:代码:InvalidRequest 消息:订阅验证请求失败。必须回复200“确定” 这是我的请求 ServiceException中的错误是“BadRequest”,但这不足以将错误与其他常见错误区分开来,因为我希望以不同的方式处理它们。ServiceException还包含一个错误属性,该属性带有一个名为“Code”的字符串属性,在我的例子中,该属性包含“InvalidRequest”。Graph SDK中的枚举包含以下代码,因此我将其与ServiceException中的“IsMatch”方法一起使用:C# 订阅验证错误处理,c#,microsoft-graph-api,C#,Microsoft Graph Api,我目前正在尝试使用Graph SDK处理无法及时验证订阅请求的异常。不幸的是,我真的不知道如何实现这一点。未及时验证订阅时引发的异常为: Microsoft.Graph.ServiceException:代码:InvalidRequest 消息:订阅验证请求失败。必须回复200“确定” 这是我的请求 ServiceException中的错误是“BadRequest”,但这不足以将错误与其他常见错误区分开来,因为我希望以不同的方式处理它们。ServiceException还包含一个错误属性,该属性
catch (ServiceException serviceException)
{
var invRequest = GraphErrorCode.InvalidRequest.ToString();
if(serviceException.StatusCode == HttpStatusCode.BadRequest)
{
if (serviceException.IsMatch(invRequest))
{
// do something
}
}
}
“InvalidRequest”的定义如下:
请求的格式不正确或不正确
考虑到这一点,我仍然认为我的错误处理不足以捕获这个特定的错误
我想知道的是:
- 使用“GraphErrorCode”枚举是否正确
- 有没有一种方法可以处理此特定错误,而不必将异常消息(“订阅验证请求失败。必须对此请求使用200 OK进行响应”)与硬编码字符串进行比较
code
处理错误,但同时记录code
和message
属性以进行调试
需要理解的一点是,不同的端点可能出于不同的原因出现相同的错误代码。对用户资源发出GET
时,与向/events
发出POST
时相比,BadRequest
的含义可能有所不同。处理程序应该同时考虑操作和错误
以下是发送无效请求时返回的示例错误(/v1.0/me/a
):
如果我只处理了BadRequest
,我的处理程序可能就足够了。我可以处理错误并让用户继续前进。然而,在我的日志中,我存储了BadRequest
和不支持的段类型。ODataQuery:users/48d31887-5fad-4d73-a9f5-3c356e68a038/a
这样我就可以在代码中正确地提交一个bug
另一个选择可能是执行一些额外的解析。假设/a
并不总是返回错误。也许/a
对AAD帐户很有效,但对MSA用户无效(FTR,/a
完全是虚构的)。如果是这种情况,我可能还想解析消息
,看看BadRequest
是否包含“不支持的段类型”,并对其进行处理,与不包含该消息的BadRequest
稍有不同 我只是想澄清一下。error JSON representations code属性能否包含HttpErrorCodes(由于您在示例中使用了BadRequest,这在中没有提到。也是最后一点。解析消息是否不可靠,因为它可能会发生变化?谢谢您详细的回答。顺便说一句,我普遍认为解析消息不太理想。它们肯定会发生变化。为了帮助缓解这一点,我倾向于为keywo解析消息rds而不是完整的消息。它不是完美的,但更好一点。至于BadRequest
,它实际上在该文档中(第一项,400-Bad Request
)。JSON不携带HTTP代码,因为它已经在JSON负载附带的响应头中。
{
"error": {
"code": "BadRequest",
"message": "Unsupported segment type. ODataQuery: users/48d31887-5fad-4d73-a9f5-3c356e68a038/a",
"innerError": {
"request-id": "fd4c8b27-26af-4b07-a5be-5efb139d1eb7",
"date": "2018-05-22T14:39:02"
}
}
}