【发布时间】:2018-05-25 03:07:32
【问题描述】:
我有一个带有ILog log 字段的基本控制器类,它是在自定义记录器服务的构造函数中设置的,通过依赖注入传递。
我想访问类似请求上下文的东西在控制器构造函数中 来获取任意 HTTP 标头或 HttpContext.Items 或类似的东西,以便在创建我的 log 时使用它。
我尝试使用IHttpContextAccessor。它给了我DefaultHttpContext,其中不包含中间件添加的Items。
我唯一能想象的就是创建控制器public 的log 属性并编写一个设置此属性的IActionFilter。因为动作过滤器可以访问上下文和控制器实例。
在控制器构造函数中没有请求上下文对我来说看起来很奇怪,因为请求信息对于避免操作中的样板代码很有用。无论如何,控制器都是根据请求创建的,因此在构造函数中使用一些请求数据没有害处。
【问题讨论】:
标签: c# dependency-injection asp.net-core-mvc-2.0