ASP.NET Web Api中HttpContext.Current.Items的替代方法

Sen*_*enj 5 c# nlog httpcontext asp.net-web-api

有一个非System.Web/HttpContext替代HttpContext.Current.Items,每请求数据存储?

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

这样,日志消息应始终看起来相同,并且开发人员对提供的格式或信息没有太大影响.

编辑:经过一些研究后我发现了这一点: 我们如何为异步.net方法创建一个callcontext? 我希望使用具有不可变集合的逻辑调用上下文将按预期工作.

Cas*_*sey 5

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

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