0

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

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

5.1 系统用于在 XP Pro 机器上进行测试。6.0 是我们在 Windows 2003 上的生产系统。

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

我错过了哪些方向?

4

2 回答 2

0

您能否发布伪造的 ExecuteGlobal 东西的代码,可以使用 Includes 对其进行重构以使其执行您想要的操作,这样您就不必破坏任何东西。失败可能需要一些查找和替换:)

于 2009-11-02T17:53:50.413 回答
0

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

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

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

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

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

PS 除非您要处理的系统非常,否则为什么不使用 <!-- #include file="MyFile.inc" --> 而不是那种“ExecuteGlobal”方法?

于 2009-10-30T21:22:46.230 回答