在 ASP.NET Core 请求处理期间,系统将会生成 TraceId 和 RequestId。这些标识符可用于跟踪关联的请求活动。在 .NET Core 3.0 中,TraceId 被替换为 TraceIdentifier。
以下是使用 TraceIdentifier 的示例代码:
public async Task Index()
{
var traceIdentifier = HttpContext.TraceIdentifier;
// do something with the traceIdentifier
return View();
}
使用 RequestId 的示例代码:
public IActionResult Index()
{
var requestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
// do something with the requestId
return View();
}
RequestId 使用了 Activity 类,它允许跨线程传递当前操作的 ID。如果没有被设置,它将使用 TraceIdentifier 作为备用 ID。要使用 Activity,需要引用 System.Diagnostics.DiagnosticSource 包。
需要确保使用了 app.UseExceptionHandler 或 app.UseDeveloperExceptionPage,在请求管道中注册了发生异常处理程序的中间件,这样才能确保 TraceIdentifier、TraceId 或 RequestId 在异常情况下可用。