You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core中如何按环境配置AddProblemDetails()显示StackTrace

在ASP.NET Core 9的ProblemDetails中根据环境显示StackTrace

要在指定环境下让ProblemDetails返回StackTrace,你可以通过AddProblemDetails的自定义配置来实现——默认框架不会主动包含堆栈信息(避免生产环境泄露敏感数据),具体步骤如下:

  1. 获取当前环境实例
    在Program.cs中先拿到IWebHostEnvironment,用来判断运行环境:

    var env = builder.Environment;
    
  2. 配置AddProblemDetails的自定义逻辑
    在AddProblemDetails里通过CustomizeProblemDetails回调,针对指定环境将StackTrace添加到ProblemDetails的扩展属性中:

    builder.Services.AddProblemDetails(options =>
    {
        options.CustomizeProblemDetails = context =>
        {
            // 仅在Development、Local、Offline环境下添加堆栈信息
            if (env.IsDevelopment() || env.IsEnvironment("Local") || env.IsEnvironment("Offline"))
            {
                if (context.Exception != null)
                {
                    // 将StackTrace添加到ProblemDetails的Extensions字典中
                    context.ProblemDetails.Extensions["stackTrace"] = context.Exception.StackTrace;
                }
            }
        };
    });
    
  3. 确保启用异常处理中间件
    保持UseExceptionHandler的配置,它会自动触发ProblemDetails的生成:

    app.UseExceptionHandler();
    

注意事项

  • 确认你的环境变量ASPNETCORE_ENVIRONMENT已正确设置为目标值(比如Local、Offline)
  • 绝对不要在生产环境添加StackTrace,防止泄露代码结构等敏感信息
  • 如果需要针对特定异常类型做不同处理,可以在CustomizeProblemDetails里判断context.Exception的类型再调整逻辑

内容的提问来源于stack exchange,提问作者fingers10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 17:44:49