【问题标题】:How to share session and cookie between asp.net web form application and asp.net core application?如何在 asp.net 网络表单应用程序和 asp.net 核心应用程序之间共享会话和 cookie?
【发布时间】:2019-05-15 09:12:52
【问题描述】:

我们有两个项目,分别是 asp.net web form 和 asp.net core。我们计划将这些与会话集成(在一个域中)。 我的搜索显示在 .net 核心中,outproc 的唯一方法是 sql server 和 Redis。 .net 核心中似乎不支持状态服务器。是这样吗?

我们测试了 sql server 会话状态但不能正常工作,asp.net 核心将会话数据保存在名为 SQLState 的表中,但在 asp.net 中保存会话数据 ASPStateTempSessions。因此会话不能在他们之间共享。

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

【问题讨论】:

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


    【解决方案1】:

    这不仅仅是商店。你说得对,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 应用程序设置为利用数据保护提供程序并且您共享同一个会话存储, key ring store 和 application name,然后他们可以查看彼此的 cookie。但是,我认为 Web Forms 不会参与其中,即使您将它们嵌入到 MVC 5 应用程序中也是如此。因此,可能无法在两者之间共享会话存储。不过,我想你可以试一试。可能发生的最糟糕的情况是它不起作用,而你又回到了现在的位置。 The ASP.NET Core docs cover how to set everything up.

    【讨论】:

    • 不知道现在是不是这样?我在 4.7.2 上有一个大型的 asp.net 应用程序。有没有更好的方法来慢慢迁移到 .net 核心?在我看来,拥有一个混合应用程序将是一个很好的迁移步骤,但似乎这可能是不可能的
    • 永远都是这样。 ASP.NET Core 是一个完全不同的框架。即使在 ASP.NET MVC 5 中也可以共享 cookie,这只是巧合,因为它恰好支持 OWIN 并且数据保护与 OWIN 兼容。否则,您将与尝试与 Ruby on Rails 或 Django 等共享内容处于同一条船上。
    【解决方案2】:

    我不知道这是否可能。 ASP Web Form 和 ASP Net Core 有不同的架构。

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

    例如。如果你想拥有跨域和跨平台单点登录,你可以这样做:

    所有项目都需要向www.sso.com 进行身份验证,以检查应用之间的登录。

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

    这里有详细的解释和示例项目:

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

    【讨论】:

      猜你喜欢
      • 2018-12-24
      • 2023-03-27
      • 2011-02-02
      • 2018-12-20
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      • 2011-03-13
      • 2018-08-25
      相关资源
      最近更新 更多