.net core 3.1 如何添加HttpContext.Current和HttpContext.Current.Application[""]

c0m*_*age 2 asp.net asp.net-core

我在这里读了一些帖子,似乎 System.Web 和 HttpContext.Current 已从 .net core 中删除。我在我的startup.cs中添加以下内容

services.addSingleton<IHttpContextAccessor, HttpContextAccesor>();

将 HttpContext.Current 添加到我的类中不起作用

在我的类库中,我将 Microsoft.AspNetCore.http 安装到我的依赖项中。我添加为 DI

public MyClass(IHttpContextAccessor _httpContextAccessor) {
  httpContextAccessor = _httpContextAccessor;
}
Run Code Online (Sandbox Code Playgroud)

在我的 cs 代码中,旧代码以

if(HttpContext.Current != null && HttpContext.Current.Application["Test"] != null]) 
Run Code Online (Sandbox Code Playgroud)

替代品是什么,到目前为止还不起作用

httpContextAccessor.HttpContext.Session != null 

Not sure what is the equivalent to HttpContext.Current.Application["Test"]
Run Code Online (Sandbox Code Playgroud)

谢谢

hei*_*zza 5

首先,在Startup.cs中注册服务,

services.AddHttpContextAccessor();
Run Code Online (Sandbox Code Playgroud)

然后你可以在任何类中调用下面的代码,它替换 HttpContext.Current

private HttpContext _httpContext => new HttpContextAccessor().HttpContext;
Run Code Online (Sandbox Code Playgroud)

您可以使用_httpContext.Items[]而不是应用程序。(生产前测试一下)