【问题标题】:Passing session data between ASP.NET Applications在 ASP.NET 应用程序之间传递会话数据
【发布时间】:2009-03-05 18:42:25
【问题描述】:

我们有几个 ASP.NET 应用程序部署到几个服务器。如果用户已经通过身份验证,在从一个应用程序移动到另一个应用程序时,是否有一种重用会话数据的标准方法或其他一些方法不要求用户登录到下一个应用程序?我希望你们知道这样做的最佳实践方法。我觉得我应该缺少一些简单的东西。

谢谢。

编辑:更清楚地说,我想传递的会话中的主要信息是经过身份验证的用户 ID,但也可能是其他一些会话变量。

【问题讨论】:

  • 身份验证和会话是 2 个独立(尽管相关)的问题,在我的回复中回答了会话位

标签: asp.net web-applications session


【解决方案1】:
【解决方案2】:
【解决方案3】:

【讨论】:

  • 我不认为跨子域会起作用,因为默认情况下会话 cookie 具有完整的主机名。
  • 更新了关于如何通过子域问题的更多信息的链接
  • 顺便说一句,我知道这样可以,但这个人声称你可以更轻松地做到这一点:forums.asp.net/t/1332808.aspx(不确定是否可以,但值得一试)
【解决方案4】:

您的问题并不清楚您是否只关心登录,或者您是否真的需要在应用程序之间共享会话数据。

假设是后者,你可以尝试这样的事情:

  • 首先,确保所有应用程序都在同一个域中运行。如果没有,所有赌注都取消。我不知道是否有一种简单的方法来配置会话 cookie 的域属性,所以你可能必须自己做,通过将 cookie 域属性设置为域:

    Response.Cookies["ASP.NET_SessionId"].Domain = ".mydomain.com";

  • 您需要确保每个应用程序都配置为使用公共状态服务器或数据库支持的会话。

【讨论】:

    【解决方案5】:

    在应用程序之间共享登录(如上所述)与在应用程序之间共享 ASP.NET 会话完全不同。

    为什么要在应用程序之间共享会话?

    ASP.NET 会话是用户当前与一个 ASP.NET 应用程序交互的隐喻。它存在于 ASP.NET 中,为我们提供了一个地方来存储用户在使用您的应用程序时发出的各种页面请求之间的临时状态数据。

    如果您的应用程序密切相关,例如用户同时或几乎同时使用两者,您可以考虑将它们合并到一个 ASP.NET 应用程序中。

    如果您的应用程序没有那么密切相关,也许它们应该共享同一个数据库作为交换数据的一种方式,或者使用 API,例如基于Web Services交换信息。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-07-01
      • 2011-12-21
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多