在 WebApi Core ConfigureServices 中访问 services.AddScoped 中的请求标头?
Posted
技术标签:
【中文标题】在 WebApi Core ConfigureServices 中访问 services.AddScoped 中的请求标头?【英文标题】:Access to Request's header in services.AddScoped in WebApi Core ConfigureServices? 【发布时间】:2018-05-12 22:43:37 【问题描述】:我想将一个值分配给从请求的标头到每个请求的类实例作为单例。
我想在Startup
类的ConfigureServices
方法中将其分配给.net core。
像这样的:
public void ConfigureServices(IServiceCollection services)
services.AddMvc();
services.AddScoped<MyClass>(provider =>
var myClass = new MyClass();
myClass.PropName = provider.Request.Headers["PropName"]; // I want to access Request Header here
);
如何在AddScoped
方法中访问Request 的标头?
【问题讨论】:
【参考方案1】:最干净的方法是如下更改您的 MyClass
构造函数:
public MyClass(IHttpContextAccessor httpContextAccessor)
this.PropName = httpContextAccessor.HttpContext?.Request?.Headers["PropName"]
然后在您的 DI 设置中:
services.AddScoped<MyClass>();
或者,如果您确实需要在 DI 设置中访问它,您可以进行如下修改:
services.AddScoped<MyClass>(provider =>
var myClass = new MyClass();
myClass.PropName = provider.GetService<IHttpContextAccessor>()?.HttpContext?.Request?.Headers["PropName"];
);
【讨论】:
以上是关于在 WebApi Core ConfigureServices 中访问 services.AddScoped 中的请求标头?的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP.Net Core 5 WebAPI 中启用 CORS
如何在 Asp.Net Core 3.0 WebAPI 中启用 CORS