c# - ASP.NET Web Api 中 HttpContext.Current.Items 的替代方案

标签 c# asp.net-web-api nlog httpcontext

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

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

这样,日志消息应该始终看起来相同,并且开发人员不会对所提供的格式或信息产生太大影响。

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

最佳答案

HttpRequestMessage.Properties是一个 IDictionary<string, Object>用于存储任意每个请求数据的集合。在 Controller 操作中,这很容易作为 Request.Properties 获得。基地属性(property)ApiController类。

不确定您打算如何将其用于日志记录,但您可能还想研究编写日志记录 DelegatingHandler

关于c# - ASP.NET Web Api 中 HttpContext.Current.Items 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31825682/

相关文章:

c# - 如何使用 NLog 登录到多个目标?

c# - 动画网格以移动或滑动到右侧 WPF

c# - 使用 HtmlAgilityPack 从 html 中提取值

c# - 如果默认接口(interface)方法是在 C# 8.0 中实现的,为什么我还需要抽象类?

date - 为什么nlog不能读取当前日期

c# - 自定义 NLog 过滤器类的单元测试

c# - 如何比较两个表中的列?

c# - 如何在 webapi 构造函数中获取主要用户?

asp.net-web-api - 防止 WebAPI OData Controller 名称冲突?

asp.net-mvc-4 - 使用 ASP.NET MVC WEB API 项目的 MVC 万无一失验证