Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 会话超时添加到QueryString_C#_Asp.net - Fatal编程技术网

C# 会话超时添加到QueryString

C# 会话超时添加到QueryString,c#,asp.net,C#,Asp.net,我在C#中有一个web应用程序,20分钟后会话超时。我无法更改此设置,因为其他应用程序使用相同的配置 因此,我正在检查会话是否为空,是否为空。它重定向并添加一个会话ID为的查询字符串。我遇到的问题是会话超时时会话ID为NULL。在超时后是否仍然可以获取sessionid 谢谢 不,一旦会议结束,它就永远结束了 但是,如果您可以控制web页面,则可以通过在实现IRequiresessionState的ashx页面中调用一个简单的ping方法,在javascript中创建一个保持活动的机制。将立即更

我在C#中有一个web应用程序,20分钟后会话超时。我无法更改此设置,因为其他应用程序使用相同的配置

因此,我正在检查会话是否为空,是否为空。它重定向并添加一个会话ID为的查询字符串。我遇到的问题是会话超时时会话ID为NULL。在超时后是否仍然可以获取sessionid


谢谢

不,一旦会议结束,它就永远结束了

但是,如果您可以控制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;
}