代码之家  ›  专栏  ›  技术社区  ›  Adam Holmberg

在C ASP.NET中动态更改sessionid

  •  3
  • Adam Holmberg  · 技术社区  · 14 年前

    我很好奇是否有一种方法可以从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开发是个新手,所以任何建议都会受到赞赏。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Adam Holmberg    14 年前

    在问了这个问题之后,我相当确定不可能动态地更改会话ID。

    我没有用位置信息标记会话ID,而是使用传递到sessionstatestoreprovider接口的httpcontext来设置cookie:

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