在 ASP.NET Web Api 中替代 HttpContext.Current.Items

Alternative to HttpContext.Current.Items in ASP.NET Web Api

是否有非 System.Web/HttpContext 替代 HttpContext.Current.Items 的按请求数据存储?

我想保存请求的信息,保存它们并从我的记录器 (NLog) 中读取值。我发现做这个的好地方是 DefaultHttpControllerActivator/IHttpControllerActivator。

这样日志消息看起来应该总是一样的,开发人员对提供的格式或信息没有太大影响。

编辑:经过更多研究,我发现了这个: How can we create a callcontext for async .net methods? 我希望将逻辑调用上下文与不可变集合一起使用会按预期工作。

HttpRequestMessage.Properties 是一个 IDictionary<string, Object> 集合,用于存储每个请求的任意数据。在控制器操作中,这很容易作为 Request.Properties 属性 在基础 ApiController class.

上可用

不确定您打算如何使用它进行日志记录,但您可能还想研究编写一个日志记录 DelegatingHandler