ASP Global.asa File

Global.asa 文件是一个可选文件,它可以包含可以被 ASP 应用程序中每个页面访问的对象、变量以及方法的声明。

文件 Global.asa

Global.asa 文件是一个可选文件,它可以包含可以被 ASP 应用程序中每个页面访问的对象、变量以及方法的声明。所有合法的浏览器脚本都可以在 Global.asa 中使用。

Global.asa 文件可以包含以下内容:

  • 事件 Application
  • 事件 Session
  • Pahayag ng <object>
  • TypeLibrary 声明
  • 指令 #include

Komento:Global.asa 文件必须存放在 ASP 应用程序的根目录中,并且每个应用程序只能有一个 Global.asa 文件。

事件在 Global.asa 中

Sa Global.asa, maaari naming sabihin kung ano ang gagawin ng application at session object sa pagsisimula at pagtatapos. Ang mga code na ginagawa sa ginagamit sa event handler. Ang Global.asa file ay maaaring maglalaman ng apat na uri ng pangyayari:

Application_OnStart - Ang pangyayari na ito ay mangyayari kapag hiniling ng unang pahina ng unang user sa ASP aplikasyon. Ang pangyayari na ito ay mangyayari kapag nagreboot ang web server o pinag-edit ang Global.asa file. Ang pangyayari na may "Session_OnStart" ay mangyayari pagkatapos ng pangyayari na ito.

Session_OnStart - Ang pangyayari na ito ay mangyayari kapag hiniling ng unang pahina ng bagay ng ASP ng bagong user.

Session_OnEnd - Ang pangyayari na ito ay mangyayari kapag magwakas ang session ng bawat user. Kapag walang pahintulot na pahina ang hiniling sa pagitan ng takdang oras (ang default na pangyayari ay 20 minuto), ang session ay magwakas.

Application_OnEnd - Ang pangyayari na ito ay mangyayari pagkatapos na magwakas ng session ng huling user. Ang tipikal na sitwasyon ay, ang pangyayari na ito ay mangyayari kapag pinatapos ang Web server. Ang subprograme na ito ay ginagamit para malinis ang mga setting pagkatapos mapatapos ang aplikasyon, gaya ng pag-alis ng mga rekord o pagpindot ng impormasyon sa file na may teksto.

Ang Global.asa ay maaring magiging tulad nito:

<script language="vbscript" runat="server">
sub Application_OnStart
  'some code
end sub
sub Application_OnEnd
  'some code
end sub
sub Session_OnStart
  'some code
end sub
sub Session_OnEnd
  'some code
end sub
</script>

Komento:Dahil ang paglagay ng script sa Global.asa ay hindi posible sa pamamagitan ng separator ng script ng ASP (<% at %>), kailangan gumamit ng elemento ng HTML <script>.

Pahayag ng <object>

Maaaring lumikha ng bagay na may sakop na session o application sa Global.asa gamit ang tag <object>.

Komento:Ang tag <object> ay dapat na nasa labas ng tag <script>.

语法:

<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
参数 描述
scope Iset ang sakop ng bagay (scope) (Session o Application).
id Tukuyin ang isang natatanging id para sa bagay.
ProgID

Ang id na nauugnay sa ClassID. Ang format ng ProgID ay: [Vendor.]Component[.Version].

Ang ProgID o ClassID ay kinakailangan na itala.

ClassID

Tukuyin ang isang natatanging id para sa COM klase na bagay.

Ang ProgID o ClassID ay kinakailangan na itala.

实例

第一个实例创建了一个名为 "MyAd" 且使用 ProgID 参数的 session 作用域对象:

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

第二个实例创建了名为 "MyConnection" 且使用 ClassID 参数的

<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>

在此 Global.asa 文件中声明的这些对象可被应用程序中的任何脚本使用。

GLOBAL.ASA:

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

您可以从 ASP 应用程序中的任意页面引用此 "MyAd" 对象:

某个 .ASP 文件:

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

TypeLibrary 声明

TypeLibrary (类型库)是一个容器,其中装有对应于 COM 对象的 DLL 文件。通过在 Global.asa 中包含对 TypeLibrary 的调用,可以访问 COM 对象的常量,同时 ASP 代码也能更好地报告错误。假如您的站点的应用程序依赖于已在类型库中声明过数据类型的 COM 对象,您可以在 Global.asa 中对类型库进行声明。

语法:

<!--METADATA TYPE="TypeLib"
file="filename"
uuid="typelibraryuuid"
version="versionnumber"
lcid="localeid"
-->
参数 描述
file 规定指向类型库的绝对路径。参数 file 或者 uuid,两者缺一不可。
uuid 规定了针对类型库的唯一的标识符。参数 file 或者 uuid,两者缺一不可。
version 可选。用于选择版本。假如没有找到指定的版本,将使用最接近的版本。
lcid 可选。用于类型库的地区标识符。

错误值

服务器会返回以下的错误消息之一:

错误 代码 描述
ASP 0222 Invalid type library specification
ASP 0223 Type library ay hindi makita
ASP 0224 Type library ay hindi maaaring maglulan
ASP 0225 Type library ay hindi maaaring mapakpak

Komento:Ang tag na METADATA ay puwedeng makatayo sa anumang lugar sa file na Global.asa (sa loob at labas ng tag na <script>). Gayunman, pinapayagan namin na ilagay ang tag na METADATA sa itaas ng file na Global.asa.

Limitasyon

Tungkol sa mga limitasyon ng mga nilalaman na maaaring ipinagkakaloob sa file na Global.asa:

Hindi mo maipapakita ang teksto sa Global.asa. Ang file na ito ay hindi nakakapagpapakita ng impormasyon.

Maaari lamang gamitin ang Server at Application object sa sub-procedure na Application_OnStart at Application_OnEnd. Sa sub-procedure na Session_OnEnd, maaari kang gamitin ang Server, Application at Session object. Sa sub-procedure na Session_OnStart, maaari kang gamitin anumang inbuild na object.

Paano gamitin ang sub-procedure

Ang Global.asa ay pangkaraniwang ginagamit upang inilalagay ang mga variable.

Ang sumusunod na halimbawa ay nagpapakita kung paano masusuring ang eksaktong oras ng unang pagdating ng bisita sa site. Ang oras na ito ay inilalagay sa Session object na may pangalang "started", at ang halaga ng variable na "started" ay makakapasok sa anumang ASP na pahina sa loob ng application:

<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>

Maaari rin gamitin ang Global.asa upang kontrolin ang pagpasok sa pahina.

Ang sumusunod na halimbawa ay nagpapakita kung paano mapagdirekta ang bawat bagong bisita sa ibang pahina, sa halimbawa ay mapagdirekta sa pahina na "newpage.asp":

<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>

Maaari rin naming isama ang mga function sa Global.asa.

Sa mga sumusunod na halimbawa, kapag nagpapatay ang Web server, ang Application_OnStart na sub-procedure ay magsisimula din. Pagkatapos, ang Application_OnStart na sub-procedure ay magsasagawa ng pagtawag sa ibang sub-procedure na may pangalang "getcustomers". Ang sub-procedure na "getcustomers" ay magbukas ng isang database, at pagkatapos ay magbibigay ng isang record set mula sa "customers" na talahanayan. Ang record set na ito ay magiging halaga ng isang array, kung saan anumang ASP na pahina ay makakapasok nang walang pangangailangan sa pagtatanong sa database:

<script language="vbscript" runat="server">
sub Application_OnStart
getcustomers
end sub
sub getcustomers 
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=conn.execute("select name from customers")
Application("customers")=rs.GetRows
rs.Close
conn.Close
end sub
</script>

Global.asa na instance

Sa kasong ito, gusto naming lumikha ng isang Global.asa file na maaaring kalkulahin ang kasalukuyang bisita.

Ang Application_OnStart ay nagtatakda ng halaga ng variable na "visitors" ng Application na 0 kapag nag-uumpisa ang server.

Bawat pag-angat ng bagong gumagamit, ang sub-procedure na Session_OnStart ay magdagdag ng 1 sa variable na "visitors".

Bawat pag-activate ng sub-procedure na Session_OnEnd, ang sub-procedure na ito ay magbawas ng 1 sa variable na "visitors".

Global.asa na file:

<script language="vbscript" runat="server">
Sub Application_OnStart
Application("visitors")=0
End Sub
Sub Session_OnStart
Application.Lock
Application("visitors")=Application("visitors")+1
Application.UnLock
End Sub
Sub Session_OnEnd
Application.Lock
Application("visitors")=Application("visitors")-1
Application.UnLock
End Sub
</script>

Ang ASP na file na ito ay magpapakita ng bilang ng kasalukuyang gumagamit:

<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%> online now!</p>
</body>
</html>