Chr*_*nce 7 asp.net-core-mvc .net-core asp.net-core asp.net-core-webapi
我正在使用 ASP.Net 核心,并且需要访问业务逻辑类(不是控制器或操作)中的特定 HTTP 标头。
为了在此处提供配置的全貌,我有一个自定义 ASP.Net Core Middleware,它基于某些逻辑将一个值添加到自定义 HTTP 标头中,我需要在业务逻辑中访问该标头中的值班级。
目前,我实现此目的的方法是使用以下 DI 注册注入 HttpContextAccessor。
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
Run Code Online (Sandbox Code Playgroud)
在需要访问 HTTP 标头的类中,我然后使用构造函数注入请求 IHttpContextAccessor 并使用它来访问相关的 HTTP 标头。
执行上述操作很好,并为我提供了我需要的结果,查看 Internet 上的各种文章,但普遍的共识似乎是避免在 ASP.Net Core 中使用 HttpContext.Current。
如果是上述情况,我的业务逻辑类是否有更好的方法来访问我的自定义中间件插入到自定义 HTTP 标头中的值?
我应该清楚,虽然目前中间件将所需的值存储在 HTTP 标头中以供业务逻辑类使用,但我对中间件的其他方法持开放态度,使所需的值可用于业务逻辑类(如果有)更好的方法。
任何问题或澄清,请告诉我。
ASP.Net Core 中没有HttpContext.Current,因此很容易避免使用它。如果您想要的话,您必须实现自己的扩展方法,但 .Net Core 社区的普遍感觉是使用IHttpContextAccessor.
在 .Net Core 的早期版本中, 的实现IHttpContextAccessor是在 DI 容器中自动注册的。在更新的版本中,您必须使用您提到的代码行自行注册:
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
Run Code Online (Sandbox Code Playgroud)
注入IHttpContext需要访问标头的方法是一种可行的方法。或者,如果您愿意,可以使用辅助方法,将标头的副本放置在更简单的结构中,然后将该对象传递给您的类,因为它实际上不需要访问完整的HttpContext.
| 归档时间: |
|
| 查看次数: |
3527 次 |
| 最近记录: |