我正计划用 Python 为旧版 ASP 应用程序编写一些新代码,但我遇到了一些奇怪的行为。如果我用 python 编写一个函数,我可以轻松地从 VBScript block 调用它。但是,如果我尝试从 python 调用 VBScript 中定义的函数,则会收到错误:
Python ActiveX Scripting Engine error '80020009'
Traceback (most recent call last): File "<Script Block >", line 3, in <module> PrintVBS() NameError: name 'PrintVBS' is not defined
/test.asp, line 20
这是一个演示该问题的简单示例:
<script language="Python" runat="server">
def PrintPython():
Response.Write( "I'm from python<br>" )
</script>
<script language="vbscript" runat="server">
Sub PrintVBS()
Response.Write( "I'm from VBScript<br>" )
End Sub
</script>
<script language="vbscript" runat="server">
PrintVBS()
PrintPython()
</script>
<script language="python" runat="server">
PrintPython() # code is fine up to here,
PrintVBS() # no error if you comment this line
</script>
有人对这种行为有任何见解吗?有什么解决方法吗?
请注意,我知道我可以将 vbscript 代码放入 WSC 文件中,但我发现它们使用起来非常痛苦,如果可能的话,我想避免这种情况。
最佳答案
这可能与order in which the script tags are processed有关.
在这种情况下,似乎首先处理包含 python 代码的脚本标签,然后处理包含 vbscript 的脚本标签。结果是您尝试在 PrintVBS() 可用之前调用它。
如果您将默认语言更改为 python,您可能会收到相反的错误。
关于python - 在 ASP 中 - 为什么我可以从 vbscript 调用 python 函数,但反之则不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2157241/