gpt4 book ai didi

c# - 我应该如何依赖 Session

转载 作者:太空宇宙 更新时间:2023-11-03 21:51:57 25 4
gpt4 key购买 nike

我正在使用 session 来做两件事:

  1. 跟踪要为特定公司加载的 css 文件。
  2. 跟踪跟踪我们所在公司的 Company Id Guid。

我看到这有时会以 null 形式出现,但我没有找到一致的问题来追踪。我毫不怀疑这可能是我需要跟踪的代码中的某些内容,但这让我想到了有关 session 的问题...

  1. 我是否非常依赖 Session 在屏幕之间传递信息?
  2. 是否一致?
  3. 什么可以在页面加载之间清除它?
  4. session 是否容易被用户清除?
  5. 我应该使用其他更可靠的东西吗?

我担心我会把它移到现场使用并出现各种问题。

我只是这样做:

Session["Css"] = css;

并以同样的方式阅读:

css = Session["Css"]

更新

我正在使用的 session :

HttpSessionStateBase Controller session

最佳答案

session 状态有几种类型。 InProc、StateServer 和 SqlServer。我相信默认是 InProc。您可以在 MSDN here 上阅读更多相关信息和 here .

其中每一个都将遵守 web.config 文件中定义的 sessionState 的超时值。对于单个服务器设置(这是我通常做的),我通常将我的 sessionState 设置如下:

<sessionState 
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
timeout="2880" />

这是与 Forms Auth 相同的默认超时,因此只要我的用户对 cookie/ session 进行身份验证,我的 session 就会一直存在。这将要求您将 ASP.NET 状态服务器上的启动设置为 Automatic。以下是我在解释这些类型及其潜在缺点时的高级通行证。

进程中

每次应用程序池回收 Web 应用程序的工作进程时,这将被重置。我相信这就是发生在您身上的事情,这就是为什么您的 session 变量在看似随机的时间为空的原因。

状态服务器

这将在应用程序池回收期间保持状态,但需要您启用 ASP.NET 状态服务器服务,并将其启动类型更改为自动。

如果您有一个网络农场或多个网络服务器处理网站,您可能会遇到问题,除非您运行专用的状态服务器。

这要求存储在 session 变量中的变量是[Serializable]

SQLServer

这会将 session 变量持久保存到 SQL 数据库中,通常是网络场情况的最佳方法。

这要求存储在 session 变量中的变量是[Serializable]

关于c# - 我应该如何依赖 Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14075989/

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