c# - 以最小的更改返回服务器生成的标识符以响应
问题描述
我的目标是返回HttpContext.TraceIdentifier
所有 API 的响应标头。
所有 API 的返回类型都是IActionResult
.
我已经看到了创建middlware
和覆盖的解决方案messageHandler
。
我想做最小的更改以将其退回。目前,我没有干扰默认消息处理程序。
解决方案
据我所知,您可以尝试使用 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)));
}
结果:
推荐阅读
- php - base64_encode - 主机服务器升级后本地与主机上的结果不同
- sql - 带部门的案例陈述
- command-line-interface - Serena 命令行,获取 item-spec
- html - 将文件导入网页 [SELENIUM]
- javascript - 传递给组件时打字稿混乱
- python - 在 Python 中使用 tricontourf 的最佳方法
- php - 如何将我的 React 应用程序连接到 PHP 文件?
- android - 如何从 attachBaseContext() 访问 ViewModel?
- bash - 天蓝色管道模板如何引用同一模板存储库中的文件?
- tensorflow - Tensorflow 非归一化日志概率