如何在asp.net Web表单应用程序和asp.net核心应用程序之间共享会话和cookie?

时间:2019-05-15 09:12:53

标签: asp.net session asp.net-core sharing

我们有两个以asp.net网络形式和asp.net核心形式存在的项目。我们计划将它们与会话(在一个域中)集成。 我的搜索显示在.net core中,用于outproc的唯一方法是sql server和Redis。 .net核心似乎不支持状态服务器。是吗?

我们已经测试了sql服务器的会话状态,但无法正常工作,asp.net核心将会话数据保存在名称为SQLState的表中,而在asp.net中将会话数据保存为ASPStateTempSessions。因此会话无法在它们之间共享。

每个人都有在ASP.NET(4.6或更高版本)和ASP.NET CORE之间共享Session对象的完整示例吗?

2 个答案:

答案 0 :(得分:0)

这不仅仅是商店。您是正确的,ASP.NET Core不支持状态服务器(至少是开箱即用的),因此无论如何您都可能需要迁移到SQL Server或Redis之类的东西。

但是,更大的问题是加密/解密。 ASP.NET和ASP.NET Core完全采用 不同的加密方法。 ASP.NET使用“机器密钥”,而ASP.NET Core使用数据保护提供程序和密钥环。即使假定共享会话存储,除非您让他们在这里使用相同的语言讲话,否则您将无法解密彼此设置的内容。

但是,在这方面,您可能不走运。 ASP.NET MVC 5支持OWIN,并且ASP.NET Core中的数据保护基础结构与OWIN兼容,因此,如果您设置ASP.NET应用程序以利用数据保护提供程序 ,则您共享同一会话存储,钥匙圈存储和应用程序名称,然后他们可以查看彼此的cookie。但是,即使您将它们嵌入到MVC 5应用程序中,我也不认为Web窗体会参与其中。因此,可能无法在两者之间共享会话存储。我想,您还是可以尝试一下。可能发生的最坏情况是它无法正常工作,而您又回到了现在的位置。 The ASP.NET Core docs cover how to set everything up

答案 1 :(得分:0)

我不知道是否可能。 ASP Web Form和ASP Net Core具有不同的体系结构。

或者,如果要在项目之间共享资源,则可以为两个项目创建Web服务。

例如。如果要跨域和跨平台单点登录,可以执行以下方案:

enter image description here

所有项目都需要通过www.sso.com身份验证才能检查应用之间的登录。

我们需要Authenticate Web服务来检查共享身份验证。而且我们可以为所有经过身份验证的用户共享其他数据。

enter image description here

这是详细的说明和示例项目:

https://www.codeproject.com/Articles/114484/Single-Sign-On-SSO-for-cross-domain-ASP-NET-appl-2