1

我正在尝试重构一个经典的 asp 代码库。在大多数情况下,它进展顺利。对于网站的不同语言版本,它有很多代码重复,因此对于 6 种语言,该网站被复制了 5 次。

我使用了 json 语言文件,并设法让它变得更加动态,而且效果很好。

我现在要做的是使 Language 类成为整个应用程序中的全局对象,以便于使用。

我使用了 global.asa,但我发现的说明和教程非常少,并没有真正携带我正确理解的任何东西。

我有 2 个文件:

全球.asa

<!--#include virtual="/Five/Classes/Language.asp"-->

<object runat="server" scope="session" id="Lang" progid="Language">
    Lang = New Language
</object>

和 test.asp

<%
Lang.LoadLanguageFile("reportAbuse")
%>

<%= Lang.iString("strTitle") %>

我收到了

Microsoft VBScript runtime error '800a01a8'

Object required: 'Lang'

/Five/0/test.asp, line 2

我不能,在这里环顾四周,网上找到的不仅仅是:

GLOBAL.ASA:

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

You could reference the object "MyAd" from any page in the ASP application:

SOME .ASP FILE:

<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>
4

1 回答 1

0

您不能将 VBScript 类用作经典 ASP 中的持久对象。您给出的示例是一个作用域为会话的 COM 对象,这与在 VBScript 中使用 POCO 类不同。

如果你想实现一个作用域的 COM 对象,你需要构建一个 DLL 并在那里实现你的类,然后将它公开给 COM 注册它,然后可以通过 Classic ASP 访问它。但是,您可能会遇到持久化数据的问题(请参阅链接)。

对于会话范围内的 COM 库,可能有一些特殊要求,但我不知道有任何要求。


有用的链接

于 2019-12-16T12:16:52.970 回答