【问题标题】:Changing SessionID Dynamically in C# ASP.NET在 C# ASP.NET 中动态更改 SessionID
【发布时间】:2010-11-30 17:10:40
【问题描述】:

我很好奇是否有一种方法可以从 C# for ASP.NET 中的 SessionStateStoreProvider(或其他一些可自定义模块)的上下文中动态更改会话 ID。

我正在实现一个自定义 SessionStateStoreProvider,并且我正在考虑增加会话 ID 以告诉商店提供者去哪里寻找会话。我已经实现了一个自定义的 SessionIDManager,它可以让我用所需的标签来增加新创建的会话 ID。问题是该标签的期望值可能会在会话的生命周期内发生变化。例如,可以从一个位置读取会话,但可能需要将其写入不同的位置。在这种情况下,ID 最初会被标记为位置 A,但在写入时,商店会希望写入位置 B。应更新标记以反映位置 B,以便下一次会话读取。

所以,从 SessionStateProviderBase 覆盖的上下文...

public override void SetAndReleaseItemExclusive(HttpContext context, 
    string id, SessionStateStoreData item, object lockId, bool newItem)

... 是否可以更改会话 ID?我知道 HttpContext.Session.SessionID 属性不可设置。有没有其他方法可以反馈这样的更新?还是有更适合在调用中携带这样的状态的方法?

我是 C# 和 Web 开发的新手,如果有任何建议,我们将不胜感激。

【问题讨论】:

    标签: c# asp.net session


    【解决方案1】:

    在问了这个问题后,我有理由确定不能动态更改会话 ID。

    我没有使用位置信息标记会话 ID,而是使用传递给 SessionStateStoreProvider 接口的 HttpContext 设置了一个 cookie:

    context.Response.SetCookie(new HttpCookie(...));
    

    【讨论】:

      猜你喜欢
      • 2012-03-21
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多