加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

在WebApi Core ConfigureServices中访问services.AddScoped中的R

发布时间:2020-12-16 06:40:34 所属栏目:asp.Net 来源:网络整理
导读:我想将一个类实例的值从Request的标题分配给每个请求作为singleton. 我想在Startup类的ConfigureServices方法中为它分配.net核心. 像这样的东西: public void ConfigureServices(IServiceCollection services){ services.AddMvc(); services.AddScopedMyCla
我想将一个类实例的值从Request的标题分配给每个请求作为singleton.
我想在Startup类的ConfigureServices方法中为它分配.net核心.
像这样的东西:

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的标头?

解决方法

最干净的方法是更改??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"];
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读