【问题标题】:Access to Request's header in services.AddScoped in WebApi Core ConfigureServices?在 WebApi Core ConfigureServices 中访问 services.AddScoped 中的请求标头?
【发布时间】: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 的标头?

【问题讨论】:

    标签: request .net-core asp.net-core-webapi request-headers


    【解决方案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"];
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-19
      • 2019-12-26
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      相关资源
      最近更新 更多