微软青睐 ASP.NET Core 在遗产之上 ASP.NET 并计划在前者中进行所有未来的发展。 这意味着,ASP.NET 正在慢慢过时。 因此,开发人员正在转向 ASP.NET Core 以获得所有未来更新和技术的好处。
但是,已经使用 ASP.NET 多年的用户无法如此顺利地进行此切换。 他们改为将一些应用程序切换到 ASP.NET Core 而不是全部。 此配置适用于除会话共享之外的所有场景。 这意味着,用户不能在 ASP 中使用或存储 ASP.NET 会话.NET Core 应用程序,反之亦然。
解决方案是将会话缓存在分布式缓存中,例如 NCache 并让它为您处理 Web 应用程序之间的会话共享。
NCache 更多信息 NCache ASP.NET 文档 NCache ASP.NET Core 配套文档
使用共享会话数据 NCache
会话数据不能在 ASP.NET 和 ASP 之间共享.NET Core 应用程序。 这是因为它们都以不同的方式序列化会话数据并使用不同的数据结构。 NCache 通过使用其将会话数据存储在缓存中来克服这些问题 序列化方法 和一个临时数据结构。 因此,允许跨 ASP.NET 和 ASP 读取会话数据.NET Core 领域广泛应用,提供了卓越的解决方案。
使用配置会话共享的过程 NCache 也很简单。 您所要做的就是下载并安装 NuGet 包 NCache 为 ASP.NET 和 ASP 提供.NET Core 并对配置文件进行一些更改。 只需按照以下步骤操作:
NCache 更多信息 NCache 会议分享文件 动态压缩序列化
为 ASP.NET 和 ASP 安装 NuGet 包.NET Core
第一步是安装相应的 NuGet 包 NCache 提供 ASP.NET 和 ASP 之间的会话共享.NET Core 领域广泛应用,提供了卓越的解决方案。 NCache 提供 AspNet.SessionState。NCache NuGet软件包 对于 ASP.NET 和 AspNetCore.Session。NCache NuGet软件包 ASP.NET Core.
配置 ASP.NET 应用程序
为 ASP.NET 应用程序安装 NuGet 包后,您需要对 web.config中 您的申请文件。 在下面 sessionState
标签,您需要确保 cookieName
属性对于 ASP.NET 和 ASP 具有相同的值.NET Core 领域广泛应用,提供了卓越的解决方案。
在下面 providers
标签,确保 sessionAppId
具有相同的价值为这两个应用程序和 enableSessionSharing
财产具有价值 true
. 如果缺少这些属性中的任何一个,请确保添加它们。 下面提供了一个示例配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<sessionState ... customProvider="NCacheSessionProvider" cookieName="ASP.NET_CORE_SessionId" <providers> <add name="NCacheSessionProvider" type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider" enableSessionSharing="true" sessionAppId="NCacheSharedSessionApp" cacheName="myPartitionedCache" ... /> </providers> </sessionState> |
配置 ASP.NET Core 应用领域
为 ASP 安装 NuGet 包后.NET Core 应用程序,您需要对 应用设置.json 您的申请文件。 就像 ASP.NET 一样,您需要确保 CookieName
和 SessionAppId
属性对于两个应用程序具有相同的值,并且 EnableSessionSharing
属性的值为 true。
在此之后,您必须使用 扩展方法 提供 NCache 用于会话共享(稍后解释)。 一个样品 应用设置.json 文件配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
"NCacheSettings": { "CacheName": "demoCache", //Replace "demoCache" with the name of your cache "SessionAppId": "NCacheSharedSessionApp", "EnableSessionLocking": false, "SessionLockingRetry": -1, "EnableLogs": false, "EnableDetailLogs": false, "ExceptionsEnabled": false, "OperationRetry": 0, "operationRetryInterval": 0, "EnableSessionSharing": true, // Default value is false "SessionOptions": { "CookieName": "ASP.NET_CORE_SessionId", // For session sharing the cookie name for the web applications needs to be the same. "CookieDomain": null, "CookiePath": "/", "CookieHttpOnly": "True", "IdleTimeout": "20", "CookieSecure": "None" } } |
NCache 会话共享的扩展方法
NCache 提供 扩展方法 对于 ASP.NET Core 会话接口,支持添加和获取自定义对象,并自动为您处理对象的序列化/反序列化。 这消除了在客户端使用二进制/JSON 转换器或编写代码来序列化/反序列化数据的需要。
如果用户想要启用 ASP 之间的会话共享.NET Core 和 ASP.NET 应用程序,它们必须使用这些扩展方法来存储和检索它们的会话数据。 NCache 只能反序列化和序列化用户的 ASP 之间的对象.NET Core 和 ASP.NET 会话(如果它们使用这些扩展方法)。
以下代码示例将自定义对象添加到 ASP.NET Core 会话使用 Set
提供的方法 NCache ASP的扩展方法.NET Core.
1 2 3 4 5 |
string key = "ProductID:1001"; Product customObejct = GetProduct(1001); // Add custom object to session with against key HttpContext.Session.Set(key, customObject); |
下面的代码示例从 ASP 中获取自定义对象.NET Core 会话使用 TryGetValue
提供的方法 NCache ASP 的扩展方法.NET Core:
1 2 3 4 |
string key = "ProductID:1001"; // Fetch custom object against key it was added against ("ProductID:1001") HttpContext.Session.TryGetValue(key, out customObject); |
NCache 更多信息 ASP.NET Core 对象缓存文档 NCache 会议分享文件
会话共享的好处 NCache
没有其他缓存供应商或以其他方式提供此 ASP.NET 和 ASP 之间的会话共享功能.NET Core 应用程序,仅 NCache 提供此功能。 不仅如此,而且 NCache 还使其配置非常简单且非侵入性。
用户只需安装相应的 NuGet 包,在相应的配置文件中进行更改(web.config中 对于 ASP.NET 和 应用设置.json ASP.NET Core),并使用 扩展方法 提供 NCache 存储/检索他们的会话。 这两个 Web 框架的用户都可以从这个特性中受益匪浅,并在两个框架之间无缝地共享他们的会话数据。
结论
喜欢会话共享, NCache 还提供了许多其他丰富、高效、易于配置和使用 功能 为其所有用户。 会话共享只是其他独有的功能之一 NCache 并且在市场上的其他任何地方都不存在。 不相信我? 尝试 NCache 现在 并亲自检查一下!
很棒的博客! 这是对所有人有用的内容 .NET core 开发人员。
感谢分享!