【发布时间】:2019-09-07 13:22:03
【问题描述】:
我有一些错误处理中间件可以吞下任何异常..
public class ErrorHandlingMiddleware
{
private readonly RequestDelegate next;
public ErrorHandlingMiddleware(RequestDelegate next)
{
this.next = next;
}
public async Task Invoke(HttpContext context /* other dependencies */)
{
try
{
await next(context);
}
catch (Exception ex)
{
await HandleExceptionAsync(context, ex);
}
}
private static Task HandleExceptionAsync(HttpContext context, Exception exception)
{
var code = HttpStatusCode.InternalServerError;
string error = "";
string logerror = JsonConvert.SerializeObject(new { error = exception });
#if DEBUG
error = logerror;
Log.Error(error);
#else
Log.Error(logerror);
error = "An unexpected error occurred";
#endif
context.Response.ContentType = "application/json";
context.Response.StatusCode = (int)code;
return context.Response.WriteAsync(error);
}
我刚开始使用 Application Insights,虽然我可以看到失败部分发生了错误,但我看不到堆栈跟踪,我怀疑这是因为中间件正在处理它。我能做点什么吗在应用程序洞察中显示所有与异常相关的内容?
【问题讨论】:
-
如果您使用 ILogger netcore 接口进行日志记录,请确保使用带有异常对象的重载,例如docs.microsoft.com/en-us/dotnet/api/…。将日志发送到 AI 的库依赖于异常对象来创建“异常遥测”。可能不是造成这种情况的原因,但通常是一种很好的做法。
标签: c# asp.net-core azure-application-insights