Cᴏʀ*_*ᴏʀʏ 6 .net asp.net session iis-6 legacy-code
那么,在你问"你的意思是什么之后,一个嵌套在另一个之内?" 我会尽可能简单地解释一下.
存在.NET Web应用程序(A).构建了一个补充应用程序(B),它可以处理几个相同的核心组件.之前的一家咨询公司以某种方式在应用程序A中"安装"了应用程序B ,以便B可以背负A的会话.所以,像这样:
- Application A (C:\Inetpub\wwwroot\ApplicationA)
+ Application B (C:\Inetpub\wwwroot\ApplicationA\sup\ApplicationB
Run Code Online (Sandbox Code Playgroud)
之前的公司没有留下关于他们如何或为什么这样做的文档,但它对他们有用.我现在面临的困境是:应用程序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 来引用它们都可以访问的数据库中的公共记录。从那时起,信息可以通过数据库共享。
| 归档时间: |
|
| 查看次数: |
2750 次 |
| 最近记录: |