在每个用户完成数据填充后,不同的计算机可以显示会话数据(从SQL Server存储)
本文关键字:数据 会话 显示 存储 Server SQL 计算机 用户 填充 | 更新日期: 2023-09-27 18:29:59
我正在使用ASP.NET C#web窗体创建一个web应用程序。我创建了会话以将数据存储在SQL Server中。我使用sessionState来设置会话的超时。以下是我所拥有的:
<sessionState mode="SQLServer"
sqlConnectionString="Data Source = server_name; Initial Catalog = database_name; User ID = username; Password = pwd;"
allowCustomSqlDatabase="true"
cookieless="false"
regenerateExpiredSessionId="true"
timeout="1440" />
我希望在不同地方使用自己计算机的用户能够检索存储在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);
}
但是,除非其他用户使用我的计算机完成网络表单,否则他们将无法获得会话数据。有办法吗?
我希望来自不同地方使用自己电脑的用户可以检索存储在SQL Server中的会话数据,以便它们可以输入数据以完成以前用户的web表单输入的数据。
将会话状态存储在SQL Server(或状态服务器)中的主要原因是为了实现负载平衡。想法是多个Web服务器共享相同的会话状态。
您要做的是-多台计算机(或浏览器)共享相同的会话状态?这不是会话状态的工作方式。
默认情况下,会话状态将在20分钟后过期。因此,即使您可以从cookie中检索会话id,该会话也会在20分钟后失效。
此外,您不应该创建cookie并基于cookie检索以前的数据如果用户在公共计算机(如库)中输入数据,这将成为一个巨大的安全漏洞。
如果您希望用户继续他/她停止的位置。您需要要求用户登录然后将用户与数据库中的临时表联系起来。