Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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# 不同的计算机可以在每个用户填写完数据后显示会话数据(存储在SQL Server中)_C#_Asp.net_Sql Server_Session - Fatal编程技术网

C# 不同的计算机可以在每个用户填写完数据后显示会话数据(存储在SQL Server中)

C# 不同的计算机可以在每个用户填写完数据后显示会话数据(存储在SQL Server中),c#,asp.net,sql-server,session,C#,Asp.net,Sql Server,Session,我正在使用ASP.NET C#web表单创建一个web应用程序。我创建了会话以将数据存储在SQL Server中。我使用sessionState设置会话的超时。以下是我所拥有的: 我希望从不同地方使用自己计算机的用户能够检索存储在SQL Server中的会话数据,以便他们能够不断输入数据,以根据以前用户输入的数据完成web表单 我在我的计算机上尝试了以下持久会话: protected void Application_PostMapRequestHandler(object sender, E

我正在使用ASP.NET C#web表单创建一个web应用程序。我创建了会话以将数据存储在SQL Server中。我使用sessionState设置会话的超时。以下是我所拥有的:

我希望从不同地方使用自己计算机的用户能够检索存储在SQL Server中的会话数据,以便他们能够不断输入数据,以根据以前用户输入的数据完成web表单

我在我的计算机上尝试了以下持久会话:

protected void Application_PostMapRequestHandler(object sender, EventArgs e)
{
    if (Request.Cookies["ASP.NET_SessionIdTemp"] != null)
    {
        if (Request.Cookies["ASP.NET_SessionId"] == null)
            Request.Cookies.Add(new HttpCookie("ASP.NET_SessionId", Request.Cookies["ASP.NET_SessionIdTemp"].Value));
        else
            Request.Cookies["ASP.NET_SessionId"].Value = Request.Cookies["ASP.NET_SessionIdTemp"].Value;
    }
}

protected void Application_PostRequestHandlerExecute(object sender, EventArgs e)
{
    HttpModuleCollectio

    HttpCookie cookie = new HttpCookie("ASP.NET_SessionIdTemp", Session.SessionID);
    cookie.Expires = DateTime.Now.AddMinutes(Session.Timeout);
    Response.Cookies.Add(cookie);
}
但是其他用户将不会有会话数据,除非他们使用我的计算机完成web表单。有办法吗

我希望在不同地方使用自己电脑的用户可以 检索存储在SQL Server中的会话数据,以便它们可以 输入数据以完成以前用户的web表单 输入数据

在SQL Server(或状态服务器)中存储会话状态的主要原因是为了负载平衡。Idea是多个Web服务器共享相同的会话状态

您要做的是-多台计算机(或浏览器)共享相同的会话状态?这不是会话状态的工作方式

默认情况下,会话状态在20分钟后过期。所以,即使您可以从cookie中检索会话id,该会话在20分钟后也将无效

此外,您不应创建cookie并根据cookie检索以前的数据。如果用户在公共计算机(如图书馆)中输入数据,则会成为一个很大的安全漏洞


如果您希望用户继续他/她停止的位置您需要要求用户登录。然后将用户与数据库中的临时表绑定

我正在考虑在tempdb中创建表来存储数据,但我在退出sqlserver时遇到了丢失表的问题。我们可以在tempdb中设置表的过期日期和时间吗?我们怎么能做到呢?谢谢。你应该创建一个真实的表来保存数据。然后运行调度程序,在特定的时间范围内清除废弃的记录。例如