C# 不同的计算机可以在每个用户填写完数据后显示会话数据(存储在SQL Server中)
我正在使用ASP.NET C#web表单创建一个web应用程序。我创建了会话以将数据存储在SQL Server中。我使用sessionState设置会话的超时。以下是我所拥有的: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
我希望从不同地方使用自己计算机的用户能够检索存储在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中设置表的过期日期和时间吗?我们怎么能做到呢?谢谢。你应该创建一个真实的表来保存数据。然后运行调度程序,在特定的时间范围内清除废弃的记录。例如