经典 ASP 通过 global.asa 定义和使用全局对象
Classic ASP defining and using a global object via global.asa
我正在尝试重构 classic asp 代码库。在大多数情况下,它进展顺利。对于网站的不同语言版本,它有很多代码重复,因此对于 6 种语言,该网站被复制了 5 次。
我已经使用了 json 语言文件,并且设法让它变得更加动态,而且效果很好。
我现在要做的是使语言 class 成为整个应用程序的全局对象,以便于使用。
我用过 global.asa,但我发现的说明和教程非常少,并没有真正包含我正确理解的任何内容。
我有 2 个文件:
global.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")%>
您不能将 VBScript classes 用作经典 ASP 中的持久化对象。您给出的示例是一个作用域为会话的 COM 对象,这与在 VBScript 中使用 POCO class 不同。
如果你想实现一个范围内的 COM 对象,你需要构建一个 DLL 并在那里实现你的 class 然后将它暴露给 COM 注册它然后可以通过经典 ASP 访问它.但是,您可能会遇到持久化数据的问题(请参阅 link)。
对于会话范围内的 COM 库可能有一些特殊要求,但我不知道。
有用links
- Classic ASP Store objects in the session object
- Classic asp persist custom classes in session
我正在尝试重构 classic asp 代码库。在大多数情况下,它进展顺利。对于网站的不同语言版本,它有很多代码重复,因此对于 6 种语言,该网站被复制了 5 次。
我已经使用了 json 语言文件,并且设法让它变得更加动态,而且效果很好。
我现在要做的是使语言 class 成为整个应用程序的全局对象,以便于使用。
我用过 global.asa,但我发现的说明和教程非常少,并没有真正包含我正确理解的任何内容。
我有 2 个文件:
global.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")%>
您不能将 VBScript classes 用作经典 ASP 中的持久化对象。您给出的示例是一个作用域为会话的 COM 对象,这与在 VBScript 中使用 POCO class 不同。
如果你想实现一个范围内的 COM 对象,你需要构建一个 DLL 并在那里实现你的 class 然后将它暴露给 COM 注册它然后可以通过经典 ASP 访问它.但是,您可能会遇到持久化数据的问题(请参阅 link)。
对于会话范围内的 COM 库可能有一些特殊要求,但我不知道。
有用links
- Classic ASP Store objects in the session object
- Classic asp persist custom classes in session