gpt4 book ai didi

c# - 在 C# 页面处理期间, session 可以过期吗

转载 作者:太空狗 更新时间:2023-10-29 19:42:58 26 4
gpt4 key购买 nike

我正在尝试解决 session ID 似乎在回发期间神秘清除的问题。我确信正在设置该值,并且我的代码中没有其他地方可以清除该 session 。此外,我将 session ID 的值存储在页面的 View 状态中。在回发期间,viewstate 为空,这实际上意味着当将值分配给 viewstate 时, session 变量为 null。有没有可能在代码执行过程中,session对象因为超时被清除了?

假设我有以下代码。

if (session["id"] == null)                                        :line1
{ :line2
session["id"] = // Generate some unique id :line3
} :line4

viewstate["id"] = session["id"]; :line5

理论上是否可能,即使 session["id"] 在第 1 行中不为空,但由于超时而在第 5 行中为空。

最佳答案

我不得不说不。我刚刚做了一个站点,并将 session 超时设置为 1(分钟)

<system.web>
<compilation debug="true" targetFramework="4.0" />
<sessionState timeout="1"></sessionState>
</system.web>

然后在页面加载中添加一个网页

    protected void Page_Load(object sender, EventArgs e)
{
Session["Test"] = "Tester";

//Should be longer than the 1 minute session timeout
Thread.Sleep(120001);

Response.Write(String.Format("Session[\"Test\"] = {0}", Session["Test"]));
}

我在 Cassini VS 调试器和 IIS 7 asp.net 4 上进行了测试,在每次测试中页面加载时都使用 Session["Test"] = Tester。我还尝试在 sleep 期间手动回收应用程序池并得到相同的结果。

关于c# - 在 C# 页面处理期间, session 可以过期吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11971546/

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