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

在两个ASP.NET应用程序之间共享会话,其中一个嵌套在另一个ASP.NE

发布时间:2020-12-16 03:51:49 所属栏目:asp.Net 来源:网络整理
导读:那么,在你问“你的意思是什么之后,一个嵌套在另一个之内?”我会尽可能简单地解释一下. 存在.NET Web应用程序(A).构建了一个补充应用程序(B),它可以处理几个相同的核心组件.之前的一家咨询公司以某种方式在应用程序A中“安装”了应用程序B,以便B可以背负A的
那么,在你问“你的意思是什么之后,一个嵌套在另一个之内?”我会尽可能简单地解释一下.

存在.NET Web应用程序(A).构建了一个补充应用程序(B),它可以处理几个相同的核心组件.之前的一家咨询公司以某种方式在应用程序A中“安装”了应用程序B,以便B可以背负A的会话.所以,像这样:

- Application A (C:InetpubwwwrootApplicationA)
    + Application B (C:InetpubwwwrootApplicationAsupApplicationB

之前的公司没有留下关于他们如何或为什么这样做的文档,但它对他们有用.我现在面临的困境是:应用程序A升级,使B无用.我更新了B来运行A提供的新核心,但是当我完成时,另一个团队已经摧毁了之前的生产和测试服务器,我无法获得备份以查看它是如何配置的.

经过一系列的改进后,我能够通过切断B的web.config文件并删除重复的部分 – 在A的web.config中已存在的部分,在单个IIS应用程序和池中复制上面的层次结构.我还将B的bin文件夹中的所有文件转储到A的bin文件夹中.

两个站点都编译并由IIS提供服务,但我无法使用此结构从A的会话中读取任何内容.我对这个结果并不感到惊讶,但我需要找到一个解决方法.简而言之,A有一个存储在其会话中的sessionID,我需要用它来获取B中的数据源,因为A的创建者施加了一些疯狂的许可规则(sessionID需要传递给其核心API中的每个函数)用户授权).

关于为什么功能不再有效的任何想法(假设我已经正确地复制了旧环境),或者我如何解决它?移动到SQL服务器以获取会话状态不是一个选项 – 我无法更改有关应用程序A的任何内容.

我看了一下A的代码(就像我敢用Reflector一样),我试图从会话中检索的变量仍在那里并被使用.

任何想法都会很棒!

解决方法

由于它们是两个独立的应用程序,因此它们(显然)具有两个不同的会话范围.您可以在一个会话而不是另一个会话中,A中的会话可以在B中的会话之前到期,强制A在B仍在使用旧会话时创建新会话.没有什么可以将A链接到B,反之亦然,所以逻辑上没有直接的方式它们甚至可以共享对象,因为它们之间没有任何有意义的相关性.

缺点是 – 您不能(轻松)直接在两个不同的应用程序之间共享会话数据.此问题的常见解决方案是通过查询字符串或cookie(如果它们位于同一域中)在两个应用程序之间传递公共ID,并且都使用该ID引用它们都可以访问的数据库中的公共记录.从那时起,可以通过数据库共享信息.

(编辑:李大同)

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

    推荐文章
      热点阅读