[英]How to maintain same session in two different sites
假设我有两个域名
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 Server作为会话管理器在站点之间共享会话,我按照这些说明操作,运行良好。
这些步骤取自: 在域之间共享ASP.net会话
ASP.NET应用程序:CSASPNETShareSessionBetweenSubDomains项目概述
摘要:
会话可以设置为不同的模式(InProc,SqlServer和StateServer)。 使用SqlServer / SateServer模式时,Session将存储在特定的SQL Server / Sate Server中。 如果两个ASP.NET Web应用程序指定与会话服务器相同的SQL Server,则所有会话存储在同一数据库中。 总而言之,如果使用SQL Server Session,则可以在不同的ASP.NET应用程序之间共享Session。 由于ASP.NET将会话ID存储到cookie以指定当前会话,因此为了共享会话,有必要在cookie中共享会话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()方法以设置从web.config读取的Application Id。
湾 实现PostRequestHandlerExecute事件以将会话ID存储到具有相同域和根路径的cookie。
配置ASP.NET Web应用程序以使用SharedSessionModule模块。 将此配置添加到web.config以使用SharedSessionModule模块:
如果您在自己的域中运行应用程序(localhost除外),
请不要忘记在发布后更改RootDomain的值。运行并测试一个。 添加新的网页。 湾 添加两个按钮(用于刷新页面和设置会话)和一个用于显示会话值的标签。 C。 在Page_PreRender()方法上,读取Session并在Label中显示它。 按钮单击事件,将值设置为会话。 d。 使用与Web站点1相同的配置创建新Web站点,但为Session e设置不同的值。 现在在两个选项卡中打开两个站点。 现在,如果在site1中设置会话值,则可以在site2中检索相同的值。 所以他们使用相同的Session。
1从Sql Server中删除会话状态。 运行“C:\\ Windows \\ Microsoft.NET \\ Framework \\ v4.0.30319 \\ aspnet_regsql.exe -S localhost \\ sqlexpress -E -ssremove”以从Sql Server中删除会话状态支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.