Учебники ASP

ГЛАВНАЯ АСП

Учебник по WP

Введение в веб-страницы Веб-страницы Razor Макет веб-страниц Папки веб-страниц Веб-страницы Глобальные Формы веб-страниц Объекты веб-страниц Файлы веб-страниц Базы данных веб-страниц Помощники веб-страниц Веб-страницы Графики веб-страниц Электронная почта веб-страниц Безопасность веб-страниц Публикация веб-страниц Примеры веб-страниц Классы веб-страниц

Бритва ASP.NET

Введение в бритву Синтаксис бритвы Переменные Razor C# Циклы Razor C# Логика Razor C# Переменные Razor VB Циклы Razor VB Логика Бритвы В.Б.

АСП Классик

Введение в ASP Синтаксис ASP ASP-переменные Процедуры ASP Условия ASP Зацикливание ASP ASP-формы Файлы cookie ASP ASP-сеанс ASP-приложение ASP #include ASP Global.asa АСП АЯКС Электронная почта ASP Примеры ASP

Справочник ASP

Функции ASP VB Ключевые слова ASP VB Ответ ASP ASP-запрос ASP-приложение ASP-сеанс ASP-сервер Ошибка ASP Файловая система ASP Текстовый поток ASP ASP-диск ASP-файл Папка ASP Словарь АСП ASP AdRotator ASP BrowserCap Связывание контента ASP Ротатор контента ASP Быстрая ссылка ASP

Учебник по ADO

Введение в ADO АДО Коннект Набор записей ADO Дисплей АДО ADO-запрос Сортировка ADO ADO Добавить Обновление ADO АДО Удалить Демонстрация ADO Ускорение ADO

Объекты АДО

Команда АДО ADO-соединение Ошибка ADO Поле ADO ADO-параметр Свойство АДО ADO-запись Набор записей ADO ADO-поток Типы данных ADO

ASP Файл Global.asa


Файл Global.asa

Файл Global.asa — это необязательный файл, который может содержать объявления объектов, переменных и методов, к которым может обращаться каждая страница приложения ASP.

Все допустимые сценарии браузера (JavaScript, VBScript, JScript, PerlScript и т. д.) можно использовать в Global.asa.

Файл Global.asa может содержать только следующее:

  • События приложения
  • События сеанса
  • объявления <объект>
  • Объявления TypeLibrary
  • директива #include

Примечание. Файл Global.asa должен храниться в корневом каталоге приложения ASP, и каждое приложение может иметь только один файл Global.asa.


События в Global.asa

В Global.asa вы можете указать объектам приложения и сеанса, что делать, когда приложение/сеанс запускается, и что делать, когда приложение/сеанс заканчивается. Код для этого размещается в обработчиках событий. Файл Global.asa может содержать четыре типа событий:

Application_OnStart — происходит, когда ПЕРВЫЙ пользователь вызывает первую страницу в приложении ASP. Это событие происходит после перезапуска веб-сервера или после редактирования файла Global.asa. Событие "Session_OnStart" происходит сразу после этого события.

Session_OnStart — это событие происходит КАЖДЫЙ раз, когда НОВЫЙ пользователь запрашивает свою первую страницу в приложении ASP.

Session_OnEnd — это событие происходит КАЖДЫЙ раз, когда пользователь завершает сеанс. Пользовательская сессия завершается после того, как пользователь не запрашивал страницу в течение заданного времени (по умолчанию это 20 минут).

Application_OnEnd — это событие происходит после того, как ПОСЛЕДНИЙ пользователь завершил сеанс. Обычно это событие происходит при остановке веб-сервера. Эта процедура используется для очистки настроек после остановки Приложения, таких как удаление записей или запись информации в текстовые файлы.

Файл Global.asa может выглядеть примерно так:

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

Примечание. Поскольку мы не можем использовать разделители сценариев ASP (<% и %>) для вставки сценариев в файл Global.asa, мы помещаем подпрограммы в HTML-элемент <script>.



<объект> Объявления

В Global.asa можно создавать объекты с областью действия сеанса или приложения с помощью тега <object>.

Примечание. Тег <object> должен быть вне тега <script>!

Синтаксис

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

Примеры

В первом примере создается объект области сеанса с именем «MyAd» с использованием параметра ProgID:

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

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

SOME .ASP FILE:

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

Объявления TypeLibrary

TypeLibrary — это контейнер для содержимого DLL-файла, соответствующего COM-объекту. Включив вызов TypeLibrary в файл Global.asa, можно получить доступ к константам COM-объекта, а код ASP может лучше сообщать об ошибках. Если ваше веб-приложение использует COM-объекты, для которых типы данных объявлены в библиотеках типов, вы можете объявить библиотеки типов в Global.asa.

Синтаксис

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

Значения ошибок

Сервер может вернуть одно из следующих сообщений об ошибке:

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

Примечание. Теги METADATA могут появляться в любом месте файла Global.asa (как внутри, так и вне тегов <script>). Однако рекомендуется, чтобы теги METADATA отображались в верхней части файла Global.asa.


Ограничения

Ограничения на то, что вы можете включить в файл Global.asa:

  • Вы не можете отображать текст, записанный в файле Global.asa. Этот файл не может отображать информацию
  • Вы можете использовать объекты Сервер и Приложение только в подпрограммах Application_OnStart и Application_OnEnd. В подпрограмме Session_OnEnd вы можете использовать объекты Сервер, Приложение и Сеанс. В подпрограмме Session_OnStart вы можете использовать любой встроенный объект

Как использовать подпрограммы

Global.asa часто используется для инициализации переменных. 

В приведенном ниже примере показано, как определить точное время первого посещения посетителем веб-сайта. Время хранится в переменной сеанса с именем «started», а значение переменной «started» можно получить с любой страницы ASP в приложении:

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

Global.asa также можно использовать для управления доступом к странице.

В приведенном ниже примере показано, как перенаправить каждого нового посетителя на другую страницу, в данном случае на страницу с именем "newpage.asp":

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

И вы можете включать функции в файл Global.asa.

В приведенном ниже примере подпрограмма Application_OnStart запускается при запуске веб-сервера. Затем подпрограмма Application_OnStart вызывает другую подпрограмму с именем «getcustomers». Подпрограмма «getcustomers» открывает базу данных и извлекает набор записей из таблицы «customers». Набор записей назначается массиву, где к нему можно получить доступ с любой страницы ASP без запроса к базе данных:

<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

В этом примере мы создадим файл Global.asa, который подсчитывает количество текущих посетителей.

  • Application_OnStart устанавливает для переменной приложения «посетители» значение 0 при запуске сервера.
  • Подпрограмма Session_OnStart добавляет единицу к переменной «посетители» каждый раз, когда приходит новый посетитель.
  • Подпрограмма Session_OnEnd вычитает единицу из «посетителей» каждый раз, когда эта подпрограмма запускается.

Файл 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>

Чтобы отобразить количество текущих посетителей в файле ASP:

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