如何在两个不同的站点中维护同一会话
本文关键字:站点 维护 会话 两个 | 更新日期: 2023-09-27 18:35:47
假设我有两个域
1. abc.com
2. xyz.com
现在我想做的事情是我在两个站点上都有一个索引页面,并且两个索引页面上都有一个图像,但是当我在abc.com
中单击下一步并在abc.com
上更改图像时,我在SQL Server中创建了一个会话变量。现在离开abc.com
,来xyz.com
xyz.com
的索引页在 2 秒后自动通过 ajax 函数刷新,现在当页面刷新时,它将向服务器发出请求并从我们使用abc.com
存储的会话中选择下一个图像名称,并通过获取我们将在 xyz.com
上显示最新图像....注意。两个站点都使用相同的服务器
我可以这样做吗? .如果是,那么如何?
您可以使用SQL服务器作为会话管理器在站点之间共享会话,我按照这些说明进行操作,效果很好。
这些步骤来自:在域之间共享 ASP.net 会话
ASP.NET 应用 : CSASPNETShareSessionBetweenSubDomain Project 概述
总结:
会话可以设置为不同的模式(InProc、SqlServer 和 状态服务器)。使用 SqlServer/SateServer 模式时,会话将存储 在特定的 SQL Server/Sate Server 中。如果两个 ASP.NET Web 应用程序 指定与会话服务器相同的 SQL Server,所有会话都存储在 同一个数据库。总而言之,如果使用SQL Server Session,它是 可以在不同 ASP.NET 应用程序之间共享会话。 由于 ASP.NET 将会话 ID 存储到 cookie 以指定当前会话, 所以为了共享会话,有必要在 饼干。
CSASPNETShareSessionBetweenSubDomains 示例演示了如何 配置会话状态服务器,然后创建共享会话模块 模块实现子域 ASP.NET Web之间的共享会话 应用。
两个 ASP.NET Web 应用程序需要在同一根域中运行(可以 使用不同的端口)。步骤:
将 SQL 服务器配置为存储会话状态 ASP.NET。
运行"C:''Windows''Microsoft.NET''Framework''v4.0.30319''aspnet_regsql.exe -S localhost''sqlexpress -E -ssadd" 以将会话状态支持添加到 Sql Server Express 1。
如果尚未将会话状态添加到 SQL Server,则在配置 使用 SQL Server 模式会话状态的网站, System.Data.SqlClient.SqlException将被抛出,说"无效" 对象名称'tempdb.dbo.ASPStateTempSessions'。
- 编写共享会话
将 ASP.NET Web 应用程序配置为使用 SQL Server 存储会话并使用特定的解密密钥和验证密钥。
将此设置添加到 web.config 文件以使用 SQL Server 会话 州:
将此设置添加到 web.config 以使用特定的解密密钥和 验证密钥:
如果在 IIS 中承载应用程序,请运行应用程序池 在可以登录数据库的帐户下。否则 System.Data.SqlClient.SqlException将被抛出,说"不能 打开登录请求的数据库"ASPState"。登录失败。
模块,实现共享会话逻辑
a. 实现 Init() 方法来设置从中读取的应用程序 ID 网络配置.
b. 实现 PostRequestHandlerExecute 事件以将会话 ID 存储到 饼干与 相同的域和根路径。
将 ASP.NET Web 应用程序配置为使用 SharedSessionModule 模块。 将此配置添加到 web.config 以使用 SharedSessionModule 模块:
如果您在自己的域(本地主机除外)中运行应用程序,
请不要忘记在之后更改根域的值 出版。运行和测试 一个。添加新网页。 b.添加两个按钮(用于刷新页面和设置会话)和一个用于显示的标签 会话值。 c. 在 Page_PreRender() 方法上,读取会话并将其显示在标签中。在按钮单击时 事件,将值设置为会话。 d. 使用与网站 1 相同的配置创建新网站,但设置不同的值 到会话 e。现在在两个选项卡中打开两个站点。现在,如果您在站点 1 中设置会话值, 您可以在 Site2 中检索相同的值。因此,它们使用相同的会话。
1 从 SQL 服务器中删除会话状态。 跑 "C:''Windows''Microsoft.NET''Framework''v4.0.30319''aspnet_regsql.exe -S localhost''sqlexpress -E -ssremove" 以删除会话状态支持 来自 Sql Server。