【发布时间】:2018-06-30 11:27:38
【问题描述】:
我们有一个 .net 框架 (4.5.1) asp.net 网站,它对用户进行身份验证并将身份验证详细信息存储在 .net 框架类库中。在目标 asp.net .net 框架 (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 应用程序访问的属性。
在下面的代码中总是有一个空异常。我如何实现我想做的事情,或者我应该只使用 .net 框架 mvc 项目,因为一切都很好。无法相信像 HttpContext.Current.Session 这样常见的事情竟然是一场噩梦。
在此先感谢您提供任何帮助。
`
using System;
using System.Web;
using System.Threading;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features;
using System.Text;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Builder;
namespace CLStandardCSharp1
{
//this is a .net core 2.0 class library project
public class HttpStateDataFactory
{
static byte[] toBytes = Encoding.ASCII.GetBytes("Some test value");
static byte[] outToBytes;
private static IHttpContextAccessor _httpContextAccessor;
private static ISession _sessionContext => _httpContextAccessor.HttpContext.Session;
public HttpStateDataFactory(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public static void SetToSession()
{
_sessionContext.Set("SessionName", toBytes);
}
public static string GetFromSession()
{
string data = _sessionContext.TryGetValue("SessionName", out outToBytes).ToString();
return data;
}
public static string SessionNameValueForClient = "N/A";
public static string SomeProperty
{
get
{
return SessionNameValueForClient= GetFromSession();
}
set
{
SessionNameValueForClient = value;
}
}
}
}
`
【问题讨论】:
标签: .net session model-view-controller