【发布时间】:2022-01-14 21:57:09
【问题描述】:
我正在尝试确定是否可以查看应用程序中发生 400 错误的详细信息。我认为知道没有价值的属性将允许更好地针对错误进行调查。例如,知道它是“名称”属性。
我在 Azure 中配置了应用洞察。它成功收集了网络应用程序发出的 400 条响应,但没有显示任何细节。
特别是在这种情况下,我在 ActionFilterAttribute 中看到此代码生成的 400。
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
context.Result = new BadRequestObjectResult(context.ModelState);
}
}
响应的内容将包含 JSON 序列化的ModelState 值。
当发生这种情况时,App Insights 会记录错误,指出请求失败并显示 400 状态代码。它没有显示任何 ModelState 值。
我真正希望能够看到的关键信息不是模型的内容(这可能包含敏感信息),而是ModelState.Values 集合的详细信息的集合基本上它等同于以下属性:
ModelState.Values.Keys.Key
ModelState.Values.Keys.Errors()
无效属性会将 ModelState.Values.Keys.ValidationState 设置为 false。
到目前为止,我的发现似乎表明我可以通过手动获取 TelemetryClient 并向 App Insights 添加另一个事件来解决此问题。
有没有办法可以将此详细信息附加到任何具有 400 异常的请求中?或者我是否需要向TelemetryClient 添加另一个自定义调用并以这种方式进行跟踪?
如果是后者,我可以以某种方式将其添加到ActionFilterAttribute 中,以便在那里处理吗?
感觉就像我不理解一些简单的东西会让一切都变得有意义。
【问题讨论】:
标签: azure-application-insights asp.net-core-2.1