gpt4 book ai didi

ASP.Net session

转载 作者:行者123 更新时间:2023-12-01 23:04:28 24 4
gpt4 key购买 nike

我想存储用户在一系列不同的 ASP.Net Web 表单中执行的某些操作的“状态”。我对持久状态的选择是什么?每种解决方案的优点/缺点是什么?

我一直在使用 Session 对象,并使用一些辅助方法来强类型化对象:

    public static Account GetCurrentAccount(HttpSessionState session)
{
return (Account)session[ACCOUNT];
}

public static void SetCurrentAccount(Account obj, HttpSessionState session)
{
session[ACCOUNT] = obj;
}

许多消息来源告诉我“Session 是邪恶的”,所以这确实是这个问题的根本原因。我想知道您认为“最佳实践”是什么,以及为什么。

最佳答案

session 状态本身并没有什么坏处。

有一些事情需要记住,但可能会影响你:

  1. 如果用户按浏览器后退按钮,您将返回到上一页,但 session 状态不会恢复。因此,您的当前帐户可能不是页面上最初的帐户。
  2. ASP.NET 进程可以被 IIS 回收。当发生这种情况时,您的下一个请求将启动一个新流程。如果您在进程 session 状态中使用默认值,它将消失:-(
  3. 如果用户一段时间不活动, session 也可能超时并产生相同的结果。默认为 20 分钟,所以一顿丰盛的午餐就可以了。
  4. 使用进程外 session 状态要求存储在 session 状态中的所有对象都是可序列化的。
  5. 如果用户打开第二个浏览器窗口,他将期望拥有第二个不同的应用程序,但 session 状态很可能在两个应用程序之间共享。因此,在一个浏览器窗口中更改 CurrentAccount 将在另一个浏览器窗口中执行相同的操作。

关于ASP.Net session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/133236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com