在ASP.NET应用程序之间传递会话数据
我们有几个ASP.NET应用程序部署到一些服务器。 有没有一种标准的方式来重用会话数据或其他方法,不要求用户在从应用程序转移到应用程序时login到下一个应用程序(如果已经通过身份validation)? 我希望有一个这样做的最佳做法,你们知道。 我觉得应该有一些我很想念的东西。
谢谢。
编辑:要更清楚,我想传递的会话中的主要信息是authentication的用户标识,但也可能是其他一些会话variables。
您可以为您的应用程序实施单点login策略。
http://aspalliance.com/1545_Understanding_Single_SignOn_in_ASPNET_20.all
http://johndyer.name/post/2005/12/Single-SignOn-with-ASPNET-Membership-and-WebServices.aspx
对于会议检查: http : //www.codeproject.com/KB/aspnet/Sharing_session_state.aspx
用这个来补充cookie是共享的: http : //mgrzyb.blogspot.com/2007/12/aspnet-and-subdomains.html
从您的问题来看,您是否只关心login,或者是否真的需要在应用程序之间共享会话数据,这一点并不清楚。
假设后者,你可以尝试这样的事情:
-
首先,确保所有的应用程序都在同一个域中运行。 如果没有,所有的投注都closures。 我不知道是否有一个简单的方法来configuration会话cookie的域属性,所以你可能必须自己做,通过设置cookie域属性到域:
Response.Cookies [“ASP.NET_SessionId”]。Domain =“.mydomain.com”;
-
您需要确保将每个应用程序configuration为使用通用状态服务器或数据库支持的会话。
在应用程序之间共享应用程序之间的login(上面已经介绍过)与在应用程序之间共享ASP.NET应用程序是完全不同的。
为什么要在应用程序之间共享会话?
ASP.NET会话是用户与一个ASP.NET应用程序当前交互的隐喻。 它存在于ASP.NET中,为我们提供了在用户使用应用程序时所做的各种页面请求之间存储临时状态数据的地方。
如果您的应用程序密切相关,例如用户同时使用两者,或几乎同时使用,则可以考虑将它们合并到一个ASP.NET应用程序中。
如果你的应用程序不是密切相关的,也许它们应该共享相同的数据库作为交换数据的手段,或者使用基于Web服务的API来交换信息。
希望有所帮助。