VBScript中的ExecuteGlobal,IIS 5.1(Win XP Pro)上的ASP无法正常工作

时间:2009-10-30 16:40:03

标签: asp-classic vbscript iis-6 iis-5

可能会丢失或误用哪些设置会导致IIS 6.0服务器上运行的相同代码在IIS 5.1服务器上失败?

我继承了这个大型的经典ASP应用程序。它使用ExecuteGlobal命令“缓存”一系列带有函数的文件。在两台服务器上,该命令执行时没有错误。但是,当应用程序稍后尝试引用“缓存”的函数时,IIS 6.0似乎工作得很好,而IIS 5.1就好像这些函数从未存在过,我得到了相应的错误。

5.1系统用于XP Pro盒上的测试目的。 6.0是我们在Windows 2003上的生产系统。

将此问题(在测试中失败但在生产中工作的相同代码)隔离到此代码需要很长时间。不幸的是,设置另一台服务器不是一种选择(预算限制 - 没有钱支付支持人员或租用所有服务器必须物理位置的空间 - 军事安装)。

我错过了哪些方向?

2 个答案:

答案 0 :(得分:0)

处理相同的HTTP请求时是否发生了“缓存”和“使用缓存的函数”?

如果答案是“是”,那么我没有任何想法,我希望其他人能回答你的问题。

如果答案是“否”,那么我很确定你的问题是你将该函数“缓存”到另一个VBScript执行上下文中。

尝试(在测试服务器上,当然:-)在定义函数的文件中添加以下2行:

Dim g_FunctionsLoadedOK
g_FunctionsLoadedOK = "OK"

以及您使用该功能之前的以下行:

if( Eval( "VarType(g_FunctionsLoadedOK)" ) <> vbString then
    ' Then you're sure there's no 'g_FunctionsLoadedOK' string variable defined in this VBScript execution context,
    ' so maybe you should reload the cached functions, or do something else..
end if

P.S。除非您正在处理的系统确实,否则为什么不使用&lt;! - #include file =“MyFile.inc” - &gt;而不是“ExecuteGlobal”方法?

答案 1 :(得分:0)

你可以发布假的ExecuteGlobal东西的代码,有可能重构它,让它做你想要的使用包,这样你就不必破坏任何东西。如果不能进行一些查找和替换,可能需要:)