加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

在ASP.NET Web应用程序之间传递会话数据

发布时间:2020-12-16 04:11:54 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试帮助一个朋友 – 他们有一个非常大的Web应用程序(ASP.NET 4.0,Visual Basic),它有许多子文件夹,都充当准子应用程序(但它们只是主应用程序的子文件夹) ).此应用程序将拆分为多个独立的Web应用程序,因为在当前形式下,很难进一步维护和开发. 问题是当
我正在尝试帮助一个朋友 – 他们有一个非常大的Web应用程序(ASP.NET 4.0,Visual Basic),它有许多子文件夹,都充当准子应用程序(但它们只是主应用程序的子文件夹) ).此应用程序将拆分为多个独立的Web应用程序,因为在当前形式下,很难进一步维护和开发.

问题是当前的单片应用程序使用了许多会话变量来处理用户信息(登录后等).我想知道是否有一种简单的方法可以在未来的多个Web应用程序之间安全地共享这些信息(显然这些应用程序具有独立性)会话).会话状态存储在SQL Server中.当前Web应用程序的用户都是外部用户,并非所有用户都可以访问所有“子应用程序”.

我正在寻找关于这两件事的一些建议:

1.
我已经做了一些搜索,发现单点登录 – 这似乎解决了这些应用程序的身份验证问题,但我对它不熟悉,如果“会话”到期,我不明白如何删除身份验证信息,因为不同的Web应用程序将具有不同的会话.一旦会话在其中一个会话中到期,是否可以从所有Web应用程序中注销用户?

2.
我怀疑(但不确定)在分割后可能需要共享的身份验证信息之上可能存在其他会话数据.什么是最好的方法(再次可靠和安全)?

我找到了this article about passing IDs(对于保存共享数据的数据库记录),并想知道它是否合适.

所有的建议将不胜感激.

PS:关于这一点,我在SO上找到了一些线索,但我不相信他们中的任何一个都回答了这些具体问题.我找到的最有帮助的是这个:

Sharing data between ASP.NET applications

解决方法

最终我找到了这个问题的解决方案,我将它留在这里作为对其他人的参考:

StateServer使用Windows服务(ASP.NET状态服务)来处理内存中的会话.这使用MachineKey,AppDomainAppID以及SessionID来唯一标识应用程序.

>将web.config中的相同MachineKey设置为与站点下的所有应用程序相同.
>在Global.asax Init()中添加代码,将AppDomainAppID设置为对所有应用程序都相同.
>实现ISessionIDManager并返回要在子应用程序中重用的自定义会话ID.

以下链接提供了我所做的实际实施的信息:

> Sharing session state over multiple applications
> Maintain the same session ID over multiple applications using state server
> Sharing sessions over applications

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读