【问题标题】:ExecuteGlobal in VBScript, ASP on IIS 5.1 (Win XP Pro) not workingVBScript 中的 ExecuteGlobal,IIS 5.1(Win XP Pro)上的 ASP 不工作
【发布时间】:2009-10-30 16:40:02
【问题描述】:

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

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

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

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

我错过了哪些方向?

【问题讨论】:

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


    【解决方案1】:

    在处理同一个 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
    

    附:除非你处理的系统真的是,否则为什么不使用 而不是那种“ExecuteGlobal”的方法呢?

    【讨论】:

    • 感谢您的建议。包含方法是他们在页面变大之前一直使用的方法,因此包含被替换为包含一个应该模拟“require_once”PHP 功能的例程。
    • 这对你的情况没有帮助,但在我看来,替换服务器端包含 executeglobe 似乎是个坏主意。您不仅会丢失所有调试信息,性能也会受到严重影响。 ASP 文件被编译为字节码,然后存储在缓存中。拥有大量包含的大型应用程序不会减慢应用程序的速度。我们从一个包含大量包含的 asp 文件(使用 urlrewriting)运行一个巨大的应用程序,它就像一个魅力。然而,Execute、executeglobal 和 eval 速度很慢,因为需要在每次调用时将字符串编译为字节码。
    • 我会喜欢将“fake a require_once”代码发送到回收站。我认为最初的程序员这样做只是因为他喜欢 PHP 中的它。对我来说越来越明显的是,我必须想出一个消除“ExecuteGlobal”部分的解决方案。
    【解决方案2】:

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

    【讨论】:

    • 事实并非如此。虽然我得到的错误看起来好像没有定义缓存的函数,但在页面的 VBScript 部分较早地放入一些调试代码(错误发生在 Javascript 中)表明该函数确实已定义并“记住”。我确实开始尝试用 INCLUDE 替换“require_once”的东西,但由于环境不同,这还有其他问题。不过,我得到了缓刑。我的老板告诉“上级”,我们需要一个真正的测试环境,不能一直“摇摆不定”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2013-07-21
    • 2014-06-09
    • 2011-12-26
    • 2012-03-26
    • 2013-07-12
    相关资源
    最近更新 更多