假设我有两个域
1。 abc.com
2. xyz.com
现在我想做的事情是我在两个网站上都有一个索引页面,并且在两个索引页面上都有一个图像,但当我点击abc.com
中的下一个并且abc.com
上的图像更改时同时我在sql server中创建了一个会话变量。现在离开abc.com
并转到xyz.com
xyz.com
的索引页面在2秒后自动获取ajax函数刷新,现在当页面获取刷新时,它将向服务器发出请求并从我们使用abc.com
存储的会话中选择下一个图像名称得到我们将在xyz.com
上显示最新图像....注意。两个站点都使用相同的服务器
答案 0 :(得分:3)
您可以使用SQL Server作为会话管理器在站点之间共享会话,我按照这些说明进行操作,效果很好。
这些步骤取自:Share ASP.net session between domains
ASP.NET应用程序:CSASPNETShareSessionBetweenSubDomains项目 概述
要点:
会话可以设置为不同的模式(InProc,SqlServer和 StateServer的)。使用SqlServer / SateServer模式时,Session将存储 在特定的SQL Server / Sate服务器中。如果是两个ASP.NET Web应用程序 指定与会话服务器相同的SQL Server,所有会话存储在其中 同一个数据库。总而言之,如果使用SQL Server Session,那就是 可以在不同的ASP.NET应用程序之间共享会话。 由于ASP.NET将Session Id存储到cookie以指定当前Session, 所以为了共享Session,有必要共享Session Id 饼干。
CSASPNETShareSessionBetweenSubDomains示例演示了如何操作 配置SessionState Server,然后创建SharedSessionModule 模块实现子域ASP.NET Web之间的共享会话 应用
两个ASP.NET Web应用程序需要在相同的根域中运行(可以 使用不同的端口)。步骤进行:
配置SQL Server以存储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存储会话并使用特定的decryptionKey和validationKey。
将此设置添加到web.config文件以使用SQL Server会话 州:
将此设置添加到web.config以使用特定的decryptionKey和 validationKey的:
如果您在IIS中托管应用程序,请运行应用程序池 在可以登录数据库的帐户下。除此以外 将抛出System.Data.SqlClient.SqlException,说“不能 打开登录请求的数据库'ASPState'。登录失败。“
编写SharedSessionModule模块以实现共享会话的逻辑
一个。实现Init()方法以设置从中读取的Application Id web.config中。
湾实现PostRequestHandlerExecute事件以将会话ID存储到 饼干 相同的域和根路径。
配置ASP.NET Web应用程序以使用SharedSessionModule模块。 将此配置添加到web.config以使用SharedSessionModule模块:
如果您在自己的域中运行应用程序(localhost除外),则 请不要忘记更改RootDomain的值 出版。
- 醇>
运行和测试 一个。添加新的网页。湾添加两个按钮(用于刷新页面和设置会话)和一个用于显示的标签 会话价值。 C。在Page_PreRender()方法上,读取Session并在Label中显示它。按钮单击 事件,将值设置为会话。 d。使用与网站1相同的配置创建新网站,但设置不同的值 到会议e。现在在两个选项卡中打开两个站点。现在,如果您在site1中设置会话值, 您可以在site2中检索相同的值。所以他们使用相同的会话。
1从Sql Server中删除会话状态。跑 “C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regsql.exe -S localhost \ sqlexpress -E -ssremove“删除会话状态支持 来自Sql Server。