1

let suppose i have two domains

1. abc.com
2. xyz.com

now the thing i want to do that i have a index page on both sites and there is a image on both index page , but when i click next in abc.com and image changes on abc.com at the same time i made a session variable in sql server . Now leave abc.com and come to xyz.com the index page of xyz.com automatically gets refresh by ajax function after 2 second , now when page get refresh it will make a request to server and pick the next image name from session which we stored using abc.com and by getting the we will show the latest image on xyz.com .... Note . both sites are using the same server

can i do this ? . If yes then how ?

4

1 回答 1

3

您可以使用 SQL Server 作为会话管理器在站点之间共享会话,我按照这些说明进行了操作,效果很好。

这些步骤取自:在域之间共享 ASP.net 会话

ASP.NET 应用程序:CSASPNETShareSessionBetweenSubDomains 项目概述

概括:

Session 可以设置为不同的模式(InProc、SqlServer 和 StateServer)。使用 SqlServer/SateServer 模式时,Session 将存储在特定的 SQL Server/Sate Server 中。如果两个 ASP.NET Web 应用程序将同一个 SQL Server 指定为会话服务器,则所有会话都存储在同一个数据库中。总而言之,如果使用 SQL Server Session,则可以在不同的 ASP.NET 应用程序之间共享 Session。由于 ASP.NET 将 Session Id 存储到 cookie 中来指定当前的 Session,所以为了共享 Session,需要在 cookie 中共享 Session Id。

CSASPNETShareSessionBetweenSubDomains 示例演示了如何配置 SessionState Server,然后创建 SharedSessionModule 模块以实现子域 ASP.NET Web 应用程序之间的共享 Session。

两个 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 说“无效的对象名称 'tempdb.dbo.ASPStateTempSessions'”。

  2. 将 ASP.NET Web 应用程序配置为使用 SQL Server 存储会话并使用特定的解密密钥和验证密钥。

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

    将此设置添加到 web.config 以使用特定的解密密钥和验证密钥:

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

  3. 编写SharedSessionModule模块实现共享Session的逻辑

    一个。实现 Init() 方法以设置从 web.config 读取的应用程序 ID。

    湾。实现 PostRequestHandlerExecute 事件以将 Session Id 存储到具有相同域和根路径的 cookie。

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

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

  5. 运行和测试 添加一个新的网页。湾。添加两个按钮(用于刷新页面和设置会话)和一个用于显示会话值的标签。C。在 Page_PreRender() 方法上,读取 Session 并将其显示在 Label 中。在按钮单击事件上,将值设置为会话。d。使用与网站 1 相同的配置创建一个新网站,但为会话 e 设置不同的值。现在在两个选项卡中打开两个站点。现在,如果您在站点 1 中设置会话值,您可以在站点 2 中检索相同的值。所以他们使用相同的会话。

1从 Sql Server 中删除会话状态。运行“C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -S localhost\sqlexpress -E -ssremove”以从 Sql Server 中删除会话状态支持。

于 2012-05-31T10:03:38.287 回答