ASP Tệp Global.asa


Tệp Global.asa

Tệp Global.asa là một tệp tùy chọn có thể chứa các khai báo về đối tượng, biến và phương thức mà mọi trang trong ứng dụng ASP có thể truy cập.

Tất cả các tập lệnh trình duyệt hợp lệ (JavaScript, VBScript, JScript, PerlScript, v.v.) đều có thể được sử dụng trong Global.asa.

Tệp Global.asa chỉ có thể chứa những thứ sau:

  • Sự kiện ứng dụng
  • Sự kiện phiên
  • khai báo <object>
  • Loại khai báo danh dự
  • chỉ thị #include

Lưu ý: Tệp Global.asa phải được lưu trữ trong thư mục gốc của ứng dụng ASP và mỗi ứng dụng chỉ có thể có một tệp Global.asa.


Sự kiện trong Global.asa

Trong Global.asa, bạn có thể cho ứng dụng và các đối tượng phiên phải làm gì khi ứng dụng / phiên bắt đầu và phải làm gì khi ứng dụng / phiên kết thúc. Mã cho điều này được đặt trong trình xử lý sự kiện. Tệp Global.asa có thể chứa bốn loại sự kiện:

Application_OnStart - Xảy ra khi người dùng FIRST gọi trang đầu tiên trong ứng dụng ASP. Sự kiện này xảy ra sau khi máy chủ Web được khởi động lại hoặc sau khi tệp Global.asa được chỉnh sửa. Sự kiện "Session_OnStart" xảy ra ngay sau sự kiện này.

Session_OnStart - Sự kiện này xảy ra MỌI lần người dùng MỚI yêu cầu trang đầu tiên của họ trong ứng dụng ASP.

Session_OnEnd - Sự kiện này xảy ra MỌI lần người dùng kết thúc phiên. Một phiên người dùng kết thúc sau khi một trang không được người dùng yêu cầu trong một thời gian cụ thể (theo mặc định là 20 phút).

Application_OnEnd - Sự kiện này xảy ra sau khi người dùng CUỐI CÙNG đã kết thúc phiên. Thông thường, sự kiện này xảy ra khi máy chủ Web dừng. Quy trình này được sử dụng để dọn dẹp cài đặt sau khi Ứng dụng dừng, như xóa bản ghi hoặc ghi thông tin vào tệp văn bản.

Tệp Global.asa có thể trông giống như sau:

<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>

Lưu ý: Vì chúng tôi không thể sử dụng dấu phân cách tập lệnh ASP (<% và%>) để chèn tập lệnh vào tệp Global.asa, chúng tôi đặt các chương trình con bên trong phần tử HTML <script>.



Khai báo <object>

Có thể tạo các đối tượng với phạm vi phiên hoặc ứng dụng trong Global.asa bằng cách sử dụng thẻ <object>.

Lưu ý: Thẻ <object> phải nằm ngoài thẻ <script>!

Cú pháp

<object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}>
....
</object>

Parameter Description
scope Sets the scope of the object (either Session or Application)
id Specifies a unique id for the object
ProgID An id associated with a class id. The format for ProgID is [Vendor.]Component[.Version]

Either ProgID or ClassID must be specified.

ClassID Specifies a unique id for a COM class object.

Either ProgID or ClassID must be specified.

Các ví dụ

Ví dụ đầu tiên tạo một đối tượng của phạm vi phiên có tên "MyAd" bằng cách sử dụng tham số ProgID:

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

Ví dụ thứ hai tạo một đối tượng thuộc phạm vi ứng dụng có tên "MyConnection" bằng cách sử dụng tham số ClassID:

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

Các đối tượng được khai báo trong tệp Global.asa có thể được sử dụng bởi bất kỳ tập lệnh nào trong ứng dụng:

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")%>

Loại khai báo danh dự

TypeLibrary là một vùng chứa nội dung của tệp DLL tương ứng với đối tượng COM. Bằng cách bao gồm một lệnh gọi đến TypeLibrary trong tệp Global.asa, các hằng số của đối tượng COM có thể được truy cập và các lỗi có thể được báo cáo tốt hơn bằng mã ASP. Nếu ứng dụng Web của bạn dựa trên các đối tượng COM đã khai báo kiểu dữ liệu trong thư viện kiểu, bạn có thể khai báo các thư viện kiểu trong Global.asa.

Cú pháp

<!--METADATA TYPE="TypeLib"
file="filename" uuid="id" version="number" lcid="localeid"
-->

Parameter Description
file Specifies an absolute path to a type library.

Either the file parameter or the uuid parameter is required

uuid Specifies a unique identifier for the type library.

Either the file parameter or the uuid parameter is required

version Optional. Used for selecting version. If the requested version is not found, then the most recent version is used
lcid Optional. The locale identifier to be used for the type library

Giá trị lỗi

Máy chủ có thể trả về một trong các thông báo lỗi sau:

Error Code Description
ASP 0222 Invalid type library specification
ASP 0223 Type library not found
ASP 0224 Type library cannot be loaded
ASP 0225 Type library cannot be wrapped

Lưu ý: Thẻ METADATA có thể xuất hiện ở bất kỳ đâu trong tệp Global.asa (cả thẻ <script> bên trong và bên ngoài). Tuy nhiên, chúng tôi khuyến nghị rằng các thẻ METADATA xuất hiện gần đầu tệp Global.asa.


Những hạn chế

Hạn chế về những gì bạn có thể đưa vào tệp Global.asa:

  • Bạn không thể hiển thị văn bản được viết trong tệp Global.asa. Tệp này không thể hiển thị thông tin
  • Bạn chỉ có thể sử dụng các đối tượng Máy chủ và Ứng dụng trong các chương trình con Application_OnStart và Application_OnEnd. Trong chương trình con Session_OnEnd, bạn có thể sử dụng các đối tượng Máy chủ, Ứng dụng và Phiên. Trong chương trình con Session_OnStart, bạn có thể sử dụng bất kỳ đối tượng dựng sẵn nào

Cách sử dụng chương trình con

Global.asa thường được sử dụng để khởi tạo các biến. 

Ví dụ dưới đây cho thấy cách phát hiện thời gian chính xác mà khách truy cập đến trang Web lần đầu tiên. Thời gian được lưu trữ trong một biến Phiên có tên là "started" và giá trị của biến "started" có thể được truy cập từ bất kỳ trang ASP nào trong ứng dụng:

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

Global.asa cũng có thể được sử dụng để kiểm soát việc truy cập trang.

Ví dụ dưới đây cho thấy cách chuyển hướng mọi khách truy cập mới đến một trang khác, trong trường hợp này là đến một trang có tên "newpage.asp":

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

Và bạn có thể bao gồm các chức năng trong tệp Global.asa.

Trong ví dụ bên dưới, chương trình con Application_OnStart xảy ra khi máy chủ Web khởi động. Sau đó, chương trình con Application_OnStart gọi một chương trình con khác có tên là "getcustomers". Chương trình con "getcustomers" mở một cơ sở dữ liệu và lấy một tập hợp bản ghi từ bảng "khách hàng". Tập hợp bản ghi được gán cho một mảng, nơi nó có thể được truy cập từ bất kỳ trang ASP nào mà không cần truy vấn cơ sở dữ liệu:

<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>

Ví dụ Global.asa

Trong ví dụ này, chúng tôi sẽ tạo một tệp Global.asa đếm số lượng khách truy cập hiện tại.

  • Application_OnStart đặt biến Ứng dụng "khách truy cập" thành 0 khi máy chủ khởi động
  • Chương trình con Session_OnStart thêm một vào biến "khách truy cập" mỗi khi khách mới đến
  • Chương trình con Session_OnEnd trừ đi một từ "khách truy cập" mỗi khi chương trình con này được kích hoạt

Tệp Global.asa:

<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>

Để hiển thị số lượng khách truy cập hiện tại trong tệp ASP:

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