Статьи Королевства Дельфи


Странный Microsoft IIS или SSI своими руками


Раздел Сокровищница

Server Side Include (SSI) полезная и удобная вещь. Только вот почему-то ограничены ее возможности в IIS всего несколькими директивами. И тем более странно ведет себя #exec если в качестве выполнимого скрипта подставить ISAPI написанную на Delphi.
Ошибки выдаются разные, но смысл их один - Не могу выполнить скрипт, файл не найден :-( Данные мучения в связке IIS 5.0, Windows 2000 Prof, Delphi 6 Enterprise продолжались несколько дней, пока не родилась мысль написать свой SSI.

Задача:Написать свой SSI. Условия:Имеем Microsoft IIS 5.0, Delphi Решение: ШАГ 1. Создание DLL которая служит интерпретатором SSI. Для этого в Delphi меню File/New/Other... Выбираем <Web Server Application>. В появившемся окне выбираем жмем кнопку OK.

В созданном WebModule добавляем одну Action Устанавливаем ее свойство Default:=True.

Создаем обработчик события OnAction. Туда можно вставить например следующий код var i: TStringList; begin i:=TStringList.Create; i.LoadFromFile(Request.PathTranslated); Response.Content:= i.Text+ Request.PathTranslated; end; или такой var i: TStringList; begin Response.Content:= 'Пользователь запросил файл: ' + Request.PathTranslated; end; Компилируем модуль.
Полученную DLL можно уложить в директорий C:\WINNT\system32\inetsrv\ ШАГ 2. Настройка IIS.

  • Запускаем Internet Service Manager (для IIS 5.0)
  • Щелкаем правой клавишей мышки на Web-сервере, выбираем Properties.
  • В появившимся окне переходим на закладку HomeDirectory. Смотрим на раздел Apllication Settings. Если там доступна только кнопка Create, то нажимаем на нее.
  • В противном случае только сверяем установки и при несоответствии с ними изменяем на необходимые.
  • Выбираем в поле со списком Execute Permissions значение Scripts and Executables.
  • Нажимаем на кнопку Configuration.
  • Появляется окно, где необходимо в закладке App Mappings нажать кнопку Add.
  • В поле Executable прописываем имя и путь к созданной dll.
  • В поле Extension указываем расширение .html (или любое другое например .aaa)
  • Устанавливаем группу переключателей Verbs в значение All Verbs.
  • Устанавливаем флажок Script engine.
  • Жмем кнопку Ok.
Результат. Теперь при запросе у IIS файла с расширением .html (или которое вы указали выше) будет вызываться ваша DLL. А там уж что хотите с этим, то и делайте. Самое главное вызываемый файл может реально и не существовать.

С помощью свойств объекта Request можно получить локальное имя запрашиваемого файла: Request.PathTranslated (Например c:\winnt\demo.html).

Также в свойствам данного объекта доступна куча другой информации (см. Help).

А где же SSI спросит Читатель?

Так вот же! У Вас есть координаты запрашиваемого файла, с помощью средств Delphi обрабатывайте его и отсылайте клиенту.

Кстати используя данную технологию возможно создание очень интересной модели, когда файла самого на диске нет, а запрос пользователя используется только для поиска самого файла в базе данных.

А если взглянуть на это чуть шире - ведь это путь создания динамического WWW-сайта с помощью одной DLL... ;-)

Пащенко Андрей (Big Bibigon)
Архангельск, 2002.





Начало  Назад  Вперед