我们有两个以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对象的完整示例吗?
答案 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服务。
例如。如果要跨域和跨平台单点登录,可以执行以下方案:
所有项目都需要通过www.sso.com
身份验证才能检查应用之间的登录。
我们需要Authenticate
Web服务来检查共享身份验证。而且我们可以为所有经过身份验证的用户共享其他数据。
这是详细的说明和示例项目:
https://www.codeproject.com/Articles/114484/Single-Sign-On-SSO-for-cross-domain-ASP-NET-appl-2