首页 > 解决方案 > 我们如何在asp.net 2.1核心应用程序的启动类中注册IHttpContextAccessor?

问题描述

我们有一个应用程序,其中 User.Identity.Name 只有一个用户为空。我已将 IHttpContextAccessor 声明为静态,如下所示。

public static IHttpContextAccessor HttpContextAccessor;

我在互联网上找到了一些东西。Asp.net core 将允许一次并发请求。如果我们将 IHttpContextAccessor 声明为静态,则它仅对第一个请求有效。请参考 链接。

根据上述参考,我已将 IHttpContextAccessor 声明从静态更改为只读。我还更改了此 IHttpContextAccessor 声明的类,从静态更改为非静态。所以我创建了对象来访问我们正在访问该类成员的地方的类成员。

但是在启动类中,我可以在配置方法中看到以下代码。由于我已将 IHttpContextAccessor 声明为只读,因此它会为以下代码提供以下编译错误。

getScopedServices.HttpContextAccessor = services.GetService<IHttpContextAccessor>();

错误截图

上面的代码有什么用?我已经在配置服务部分将 IHttpContextAccessor 注册为单例,如下所示。我们真的需要上面的代码吗?

 #region Singleton

        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

        #endregion Singleton

如果我们从代码中删除以下行会发生什么?请帮助我。

getScopedServices.HttpContextAccessor = services.GetService<IHttpContextAccessor>();

标签: asp.net-core

解决方案


推荐阅读