python - 在 ASP 中 - 为什么我可以从 vbscript 调用 python 函数,但反之则不行?

标签 python vbscript asp-classic

我正计划用 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/

相关文章:

python - 求 pow(x,n) 的二等分递归解

python - 有没有办法在python中使用字典来打印2个输出: one as string of whole token and one as number

http - 如何从 vbscript 获取电报机器人 getUpdates json 并阅读它

mysql - 需要帮助使用 vb 脚本从 Excel 工作表更新 SQL 表

command-line - 通过 VBS 带参数运行命令行

asp-classic - 经典 ASP 结果集 - 终极困惑!

MYSQL, COUNT = 0 错误

asp-classic - 在经典asp中将utf-8转换为iso-8859-1

python - 对于大型数组,MPI.Gather 调用挂起

python - pygame 中的键盘布局感知组合