C# 会话超时添加到QueryString
我在C#中有一个web应用程序,20分钟后会话超时。我无法更改此设置,因为其他应用程序使用相同的配置 因此,我正在检查会话是否为空,是否为空。它重定向并添加一个会话ID为的查询字符串。我遇到的问题是会话超时时会话ID为NULL。在超时后是否仍然可以获取sessionidC# 会话超时添加到QueryString,c#,asp.net,C#,Asp.net,我在C#中有一个web应用程序,20分钟后会话超时。我无法更改此设置,因为其他应用程序使用相同的配置 因此,我正在检查会话是否为空,是否为空。它重定向并添加一个会话ID为的查询字符串。我遇到的问题是会话超时时会话ID为NULL。在超时后是否仍然可以获取sessionid 谢谢 不,一旦会议结束,它就永远结束了 但是,如果您可以控制web页面,则可以通过在实现IRequiresessionState的ashx页面中调用一个简单的ping方法,在javascript中创建一个保持活动的机制。将立即更
谢谢 不,一旦会议结束,它就永远结束了 但是,如果您可以控制web页面,则可以通过在实现IRequiresessionState的ashx页面中调用一个简单的ping方法,在javascript中创建一个保持活动的机制。将立即更新一个示例 下面是我们使用的javascript(请注意,这会警告用户超时,但它很容易执行非发布查询): 在上面的示例中,m_WSSessionTimeOutwarning Minutes和m_WSSessionExpiresInMinutes是在服务器端代码中设置的,并带有对ResetSessionTimeoutWarning()的初始调用
ResetSessionTimeout对实现iRequestSessionState的ASHX页面执行ajax请求,以保持用户会话的活动状态。创建会话ID时,还可以将其保存到浏览器cookie中 然后,当您检查是否有SessionID时,首先检查会话。
如果它不存在,请检查cookie并将其设置回会话变量。健壮的应用程序不会关心会话到期。这可能发生在会话超时过期之前,例如,如果应用程序池被回收 因此,一个健壮的应用程序将始终测试会话中是否存在数据项,如果不存在,则刷新它(例如从数据库中)。例如:
MyType GetMyValue()
{
object o = Session["MyValue"];
if (o == null)
{
o = GetMyValueFromPersistentStore(...); // ... e.g. from a database
Session["MyValue"] = o;
}
return (MyType) o;
}
如果您使用会话来保存尚未持久化的临时数据,那么您可能需要重定向到主页,并让用户重新启动。尽可能避免。会话超时后,会话id已消失。。。
MyType GetMyValue()
{
object o = Session["MyValue"];
if (o == null)
{
o = GetMyValueFromPersistentStore(...); // ... e.g. from a database
Session["MyValue"] = o;
}
return (MyType) o;
}