在每个用户完成数据填充后,不同的计算机可以显示会话数据(从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存储)

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

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

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

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

此外,您不应该创建cookie并基于cookie检索以前的数据如果用户在公共计算机(如库)中输入数据,这将成为一个巨大的安全漏洞。

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