Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
经典ASP/ASP.NET应用程序变量_Asp.net_Asp Classic_Iis 8_Application Variables - Fatal编程技术网

经典ASP/ASP.NET应用程序变量

经典ASP/ASP.NET应用程序变量,asp.net,asp-classic,iis-8,application-variables,Asp.net,Asp Classic,Iis 8,Application Variables,我们继承了一个大约40GB大小的网站(主要来自用户提交的内容),它混合了经典ASP、内联.Net和编译的.Net。从技术上讲,有两个站点与此相关,为了节省磁盘空间,我特意将IIS设置为有两个物理站点指向同一文件夹,但有独立的应用程序池来分隔工作进程 我们偶尔遇到的问题是,当您访问其中一个站点时,它似乎以某种方式从另一个站点获取应用程序变量。从我在这里/Bing上看到的一切来看,由于独立的应用程序池,工作进程应该是分开的,但我想知道经典ASP是否以某种方式摆脱了这一点?考虑到所有可以想象的东西的混

我们继承了一个大约40GB大小的网站(主要来自用户提交的内容),它混合了经典ASP、内联.Net和编译的.Net。从技术上讲,有两个站点与此相关,为了节省磁盘空间,我特意将IIS设置为有两个物理站点指向同一文件夹,但有独立的应用程序池来分隔工作进程

我们偶尔遇到的问题是,当您访问其中一个站点时,它似乎以某种方式从另一个站点获取应用程序变量。从我在这里/Bing上看到的一切来看,由于独立的应用程序池,工作进程应该是分开的,但我想知道经典ASP是否以某种方式摆脱了这一点?考虑到所有可以想象的东西的混合(大约有4200个物理.asp/.aspx文件,后者大多以03_ux开始。因为在我参与之前,这是开始迁移到.Net的方法),将它们作为独立的站点和文件夹是否更好?我似乎不明白为什么应用程序变量会在中途被翻转,但这会导致许多问题——特别是因为连接字符串也是应用程序变量,并且在这件事情背后有两个数据库

有什么建议吗?从应用程序变量/工作进程的角度来看,经典ASP的工作方式是否不同


旁注-我知道应用程序变量在.Net世界中是一个糟糕的选择,尤其是对于连接字符串。我正在努力纠正这一点,但这是一项大规模的工作,没有任何文档或评论,这些东西到处都在使用

除非经典ASP站点和网络应用程序**之间存在有意的交换,即使是在同一站点上运行(!!!),但由于明显的原因(例如,使用应用程序变量存储值),否则经典ASP无法将变量传递给网络应用程序。即使是会话变量也不能在经典ASP和NET之间共享。它必须在代码中有意地完成

例如,如果您使用iframe并将url字符串中的变量从NET app传递到经典ASP页面或返回,或者仅从经典ASP页面调用NET app并以url字符串或verse vs传递变量


**或者,如果您在同一域下运行,则使用Cookie在应用程序之间共享值。

听起来好像您缺少某个应用程序池。在经典asp站点中查找带有
global.asa的文件夹。这些文件中的
文件应配置为IIS中的应用程序。只有一个global.asa文件(和一个global.asax)并且没有一个内部文件夹被配置为应用程序/虚拟目录。本质上,只有两个站点脱离了相同的物理目录结构,所以从这个意义上讲,这是相对简单的。如果不是这样,我会再次检查经典asp和asp.net站点是否共享同一个应用程序池。您可能还需要确保经典asp应用程序池设置为“经典”托管管道模式,同时检查“框架”是否设置为“无托管代码”。这些站点是经典asp/.Net的混合体(两个站点都从相同的物理文件夹结构读取,尽管它们在IIS中与站点和应用程序池独立)。它是一个开始升级到.Net的地方,后来被放弃了,所以现在网站上有大量的经典ASP和.Net文件在一起使用。所以从这个意义上说,他们必须分享东西,所有这些都很好。我遇到的问题是,有时来自一个站点(和应用程序池)的应用程序变量会重叠到另一个站点(和应用程序池),这是没有意义的,因为它们是独立的。当您登录到aspx页面时,它会将您重定向到一个经典的ASP页面,该页面在查询字符串中获取auth所需的所有会话变量,然后将您重定向到您要去的任何地方。至少可以说,这是一个非常特殊的应用程序。遗憾的是,你没有提供任何编码来支持你的说法。看看它是如何重定向的,以及aspx传递给重定向URL的内容。配置了哪些应用程序以及哪些应用程序池配置。NET应用程序和经典ASP即使在最好的情况下也不能从同一个应用程序池运行。。你错过了一些东西。看看你必须做些什么才能达到你刚才解释的目标:。在你们读了这篇文章之后,检查你们的网站,看看你们是否有类似的东西。@Digital还有一件事,因为你们的网站显然使用了同一个域,你们有并没有费心去查看cookies?这些可能是在经典ASP和ASPX页面之间传递值,尤其是在登录页面和购物车上…@digitall在这种情况下,将此问题报告给Microsoft,作为经典ASP和NET应用程序之间通信的新发现。可能会将其视为安全威胁。您排除:Cookie-不同的域、会话-因为它是经典的ASP和NET,并且位于不同的应用程序池中,所以无法共享应用程序变量。剩下的要么是故意在代码中共享数据,要么是安全漏洞(漏洞)。