如何在.net core 2.0类库项目中使用会话

如何在.net core 2.0类库项目中使用会话,.net,session,model-view-controller,.net,Session,Model View Controller,我们有一个.net framework(4.5.1)asp.net网站,它对用户进行身份验证,并将身份验证详细信息存储在.net framework类库中。当在目标asp.net.net framework(4.5.x)网站中引用此类库时,可以访问源网站传递的所有变量 我们希望将目标应用程序更改为.net core 2.0 mvc。我正在尝试编写一个.net core(2.0)类库,该类库将在目标应用程序中引用,并使用原始应用程序传递的会话变量数据(仍将保留在.net framework 4.5

我们有一个.net framework(4.5.1)asp.net网站,它对用户进行身份验证,并将身份验证详细信息存储在.net framework类库中。当在目标asp.net.net framework(4.5.x)网站中引用此类库时,可以访问源网站传递的所有变量

我们希望将目标应用程序更改为.net core 2.0 mvc。我正在尝试编写一个.net core(2.0)类库,该类库将在目标应用程序中引用,并使用原始应用程序传递的会话变量数据(仍将保留在.net framework 4.5.1中)

最初的类库使用HttpContext.Current.Session,我现在发现它在.net core 2.0中没有使用。我只想让.net 4.5 web应用程序将会话传递到.net core 2.0类库,并将其分配给.net core 2.0 mvc应用程序将访问的属性

在下面的代码中,始终存在空异常。我该如何实现我想做的,还是应该使用.NETFramework mvc项目,因为这一切都很好。无法相信像HttpContext.Current.Session这样常见的东西会变成这样的噩梦

提前感谢您在这方面的帮助

`


`

在项目中的任何位置使用HttpContex并删除HttpContex中的功能:

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features;

namespace MVC_CoreWebApp.Models
{
    public static class HttpContext2
    {
        public static HttpContext Current => new HttpContextAccessor().HttpContext;

        public static string UserHostAddress => Current.Features.Get<IHttpConnectionFeature>().RemoteIpAddress.ToString();
        public static string UserAgent => Current.Request.Headers["User-Agent"].ToString();
    }
}
使用Microsoft.AspNetCore.Http;
使用Microsoft.AspNetCore.Http.Features;
命名空间MVC_CoreWebApp.Models
{
公共静态类HttpContext2
{
公共静态HttpContext Current=>new HttpContextAccessor().HttpContext;
公共静态字符串UserHostAddress=>Current.Features.Get().RemoteIpAddress.ToString();
公共静态字符串UserAgent=>Current.Request.Headers[“User Agent”].ToString();
}
}

在ASP.net core 2.1上成功测试这不起作用。新建HttpContextAccessor()。HttpContext为空。@您必须在http请求启动后调用它。例如,在
controller
app.Use()中
Startup.cs
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features;

namespace MVC_CoreWebApp.Models
{
    public static class HttpContext2
    {
        public static HttpContext Current => new HttpContextAccessor().HttpContext;

        public static string UserHostAddress => Current.Features.Get<IHttpConnectionFeature>().RemoteIpAddress.ToString();
        public static string UserAgent => Current.Request.Headers["User-Agent"].ToString();
    }
}