如何在c#mvc中跨多个子域保持会话?

Dou*_*oug 3 c# asp.net-mvc session asp.net-mvc-3

一个购物车应用程序我正在从正常页面进入提交您的详细信息页面时跳转域.

简而言之,部署了两个应用程序副本:一个服务器用于"主"站点,一个服务器具有运行在https上的ev证书,用于客户详细信息(包括付款;这是PCI合规性问题).

我的问题是:

http://shop.domain - > https://secure.domain跳转(如果用户浏览后退回),我该如何保留会话?

使用JSONP传递cookie跨越域是微不足道的,但我不知道如何处理远程端的"重新连接"会话.

我已经阅读了有关滚动您自己的自定义会话提供程序等的各种事情,但我还没有找到一个不仅仅是通用建议; 当然没有关于如何使用它来重新加入会话的示例.

这是一个MVC3 c#网络应用程序.

bal*_*dre 9

问题Session在于它们保存在同一个域中.

如果您在子域中有2个应用程序,则可以随时将其附加到您的域中web.config

<httpCookies domain=".domain.com"/>
Run Code Online (Sandbox Code Playgroud)

这将解决问题,但如果域完全不同,最好的方法是推出自己的会话提供程序或使用现有的提供程序,如SQL.

您可以使用这个任何缓存系统,而不是将变量附加到会话变量中,您将它们作为键/值对附加到缓存中,您可以始终使用NoSQL替代方案(那里有大量免费帐户,因此您可以进行原型设计和制作概念证明,以推出最后一点).

Memcached服务器始终是一个很好的选择,Couchbase作为社区版本免费提供.

这里的诀窍是这样做:

Cache.AddObject(key + "UserInfo-name", "Bruno Alexandre");
Run Code Online (Sandbox Code Playgroud)

在那里key可以附加在查询字符串值global.asaxsession_start

而不是这个

Session["UserInfo-name"] = "Bruno Alexandre";
Run Code Online (Sandbox Code Playgroud)