.net core利用中间件获取IHttpContextAccessor

1、建立一个静态类

    public class ServiceProviderInstance
    {
        public static IServiceProvider Instance { get; set; }
    }

2、在应用初始化过程中,WebHostBuilder会利用ServiceCollection来创建新的ServiceProvider来供系统使用,所以我们在Startup类的Configure方法中,通过ApplicationBuilder的ApplicationServices属性就能获取到系统的ServiceProvider实例,在此我们利用ServiceProviderInstance的Instance属性保存当前的IServiceProvider以供系统后面使用 

.net 5写法

参考:https://www.cnblogs.com/lex-wu/p/10528109.html

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
            ...
            ServiceProviderInstance.Instance = app.ApplicationServices;
}

.net 6 写法

ServiceProviderInstance.Instance = app.Services;

参考:https://stackoverflow.com/questions/70321946/net-6-di-applicationservices-not-contains-in-webapplication

3、使用,在需要的位置通过静态属性获取对应的实例

Claims = ServiceProviderInstance.Instance.GetRequiredService<IClaimsAccessor>();

 

posted on   静以修身俭以养德  阅读(318)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2011-03-24 嵌套循环td时补齐td的解决方法

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示