【发布时间】:2014-06-03 03:13:09
【问题描述】:
我们继承了一个大小约为 40GB 的网站(主要来自用户提交的内容),其中混合了经典 ASP、内联 .Net 和与之相关的已编译 .Net。从技术上讲,有两个站点与此相关联,为了节省磁盘空间,我特意将 IIS 设置为让两个物理站点指向同一个文件夹,但使用独立的应用程序池来分隔工作进程。
我们遇到的问题是有时当您访问其中一个站点时,它似乎会以某种方式从另一个站点获取应用程序变量。从我在这里/Bing 上看到的所有内容来看,由于独立的应用程序池,工作进程应该是分开的,但我想知道经典的 ASP 是否会以某种方式抛弃它?考虑到所有可以想象的东西的混合(有大约 4,200 个物理 .asp/.aspx 文件,后者大多以 03_ 开始,因为这是在我参与之前选择开始迁移到 .Net 的方法),拥有这些更好吗?作为独立的站点和文件夹?我似乎无法弄清楚为什么应用程序变量会在中途被翻转,但这会导致许多问题 - 特别是因为连接字符串也是应用程序变量,并且这件事背后有两个数据库。
有什么建议吗?从应用程序变量/工作进程的角度来看,经典 ASP 的工作方式是否不同?
旁注 - 我知道应用程序变量在 .Net 世界中是一个糟糕的选择,尤其是对于连接字符串。我正在尝试纠正这个问题,但这是一项艰巨的任务,其中存在零文档或 cmets,并且这些东西在无处不在。
【问题讨论】:
-
听起来您在某处缺少应用程序池,请在经典 asp 站点中查找带有
global.asa文件的文件夹,这些文件夹应配置为 IIS 中的应用程序。 -
只有一个 global.asa 文件(和一个 global.asax),并且没有一个内部文件夹被配置为应用程序/虚拟目录。本质上,只有两个站点位于同一个物理目录结构之外,因此从这个意义上说,它相对简单。否则就变得很奇怪了。
-
那么在这种情况下,我会仔细检查经典的 asp 和 asp.net 站点是否共享同一个应用程序池。您可能还需要确保将经典 asp 应用程序池设置为“经典”托管管道模式,同时检查“框架”是否设置为“无托管代码”。
-
这些站点是经典 ASP/.Net 的混合体(两个站点从相同的物理文件夹结构中读取,尽管它们在 IIS 中作为站点和应用程序池是独立的)。这是开始升级到 .Net 的地方,然后被放弃了,所以现在网站上有大量经典的 ASP 和 .Net 文件一起使用。所以从这个意义上说,他们必须分享东西,所有这些都很好。我遇到的问题是有时来自一个站点(和应用程序池)的应用程序变量会重叠到另一个站点(和应用程序池)上,这没有意义,因为它们是独立的。
标签: asp.net asp-classic iis-8 application-variables