【发布时间】: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 开发的新手,如果有任何建议,我们将不胜感激。
【问题讨论】: