繁体   English   中英

如何在两个不同的站点中维护相同的会话

[英]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应用程序需要在相同的根域中运行(可以使用不同的端口)。 脚步:

  1. 配置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,指出“无效的对象名称't​​empdb.dbo.ASPStateTempSessions'。”

  2. 配置ASP.NET Web应用程序以使用SQL Server存储会话并使用特定的decryptionKey和validationKey。

    将此设置添加到web.config文件以使用SQL Server会话状态:

    将此设置添加到web.config以使用特定的decryptionKey和validationKey:

    如果您在IIS中托管应用程序,请在可以登录数据库的帐户下运行应用程序池。 否则将抛出System.Data.SqlClient.SqlException,说“无法打开登录请求的数据库'ASPState'。登录失败。”

  3. 编写SharedSessionModule模块以实现共享会话的逻辑

    一种。 实现Init()方法以设置从web.config读取的Application Id。

    实现PostRequestHandlerExecute事件以将会话ID存储到具有相同域和根路径的cookie。

  4. 配置ASP.NET Web应用程序以使用SharedSessionModule模块。 将此配置添加到web.config以使用SharedSessionModule模块:

    如果您在自己的域中运行应用程序(localhost除外),
    请不要忘记在发布后更改RootDomain的值。

  5. 运行并测试一个。 添加新的网页。 添加两个按钮(用于刷新页面和设置会话)和一个用于显示会话值的标签。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM