首页 > 解决方案 > 以最小的更改返回服务器生成的标识符以响应

问题描述

我的目标是返回HttpContext.TraceIdentifier所有 API 的响应标头。

所有 API 的返回类型都是IActionResult.

我已经看到了创建middlware和覆盖的解决方案messageHandler

我想做最小的更改以将其退回。目前,我没有干扰默认消息处理程序。

标签: c#asp.netasp.net-coreasp.net-mvc-4asp.net-web-api

解决方案


据我所知,您可以尝试使用 asp.net 核心操作过滤器作为全局过滤器或属性来满足您的要求。

您可以在 OnActionExecuted 方法中获取 httpcontext,然后您可以将过滤器注册为特定控制器或全局过滤器。

更多细节,您可以参考以下代码:

创建一个动作过滤器:

public class TestActionFilter : IActionFilter
{
    public void OnActionExecuted(ActionExecutedContext context)
    {
        var re =  context.HttpContext.TraceIdentifier;
        context.HttpContext.Response.Headers.Add("TraceIdentifier", re);

    }

    public void OnActionExecuting(ActionExecutingContext context)
    {

 
        
        //throw new NotImplementedException();
    }


}

将其添加为 web api 控制器中的属性:

[TypeFilter(typeof(TestActionFilter))]
public class WeatherForecastController : ControllerBase

或将其注册为全局过滤器:

public void ConfigureServices(IServiceCollection services)
{
   services.AddControllers(options=>options.Filters.Add(typeof(TestActionFilter)));
}

结果:

在此处输入图像描述


推荐阅读