将会话传递给另一个子域

时间:2012-01-18 17:51:20

标签: c# asp.net

在C#中,如何将会话从一个子域传递到另一个子域? 例如,我使用IIS localhost,我试图从

发送值

http:\\localhost\site1http:\\localhost\site2

使用以下方式

In site1

Session["test"] = "My value";

In site2

Response.Write(Convert.ToString(Session["test"]));

上述方法可以很好地将值从一个页面传递到另一个页面但我需要将值从一个子域传递到另一个子域,即一个IIS Web应用程序传递到另一个IIS Web应用程序。

3 个答案:

答案 0 :(得分:1)

您无法使用默认会话状态提供程序执行此操作。您必须使用提供者模型(SessionStateStoreProvider)自行滚动,请参阅:here

您也可以不使用提供者模型并执行this

之类的操作

修改 哈克:我想你可以做到。 here

答案 1 :(得分:0)

我正在通过公共数据库交换会话ID(和相关设置)来做类似的事情。

即。

  1. 站点1将其会话ID写入数据库表,以及上述示例中的所有必需关联设置,如test
  2. 站点1调用站点2上的URL,将站点1的会话ID作为查询字符串参数传递。
  3. site 2选择作为查询字符串参数传递的会话ID。
  4. 站点2使用传递的会话ID作为数据库表中的查找键,以获取test的值(在您的示例中为“我的值”)
  5. 为了增强安全性,我还为表写了一个时间戳,让站点2只读取会话ID 时间戳(有一些容差)匹配的那些行。此外,站点2在读取后删除记录。

    当然,这不是直截了当的,可能不是你想要实现的100%,但可能有一些想法可以建立在其上。

答案 2 :(得分:0)

会话特定于应用程序。你可以从site1发布到site2(例如通过JQuery)。帖子将允许您发送数据(隐藏)。然后将帖子中的查询字符串分配给site2上的新会话变量。