Переходим от VBScript к ASP и ASP.NET. Безопасность и синтаксис::Журнал СА 1.2006
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Книжная полка  

Защиты много не бывает

Среди книжных новинок издательства «БХВ» есть несколько изданий, посвященных методам социальной инженерии

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6407
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 7112
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4392
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3085
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3880
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3896
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6385
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3231
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3527
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7361
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10723
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12443
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14093
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9191
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7140
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5445
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4683
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3494
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3211
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3449
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3090
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Переходим от VBScript к ASP и ASP.NET. Безопасность и синтаксис

Архив номеров / 2006 / Выпуск №1 (38) / Переходим от VBScript к ASP и ASP.NET. Безопасность и синтаксис

Рубрика: Программирование /  Веб-программирование

ИВАН КОРОБКО

Переходим от VBScript к ASP и ASP.NET

Безопасность и синтаксис

Многие программисты используют VBScript для создания сценариев, предназначенных для управления серверами. Некоторые скрипты настолько усложняются, что их трудно использовать без графического интерфейса. Оптимальным решением этой задачи является создание вебприложения на ASP, ASP.NET.

Создавая сценарии на VBScript для обслуживания серверов, таким образом автоматизируя работу системного администратора и службы технической поддержки, сводя до минимума влияние человеческого фактора, программисты приходят к выводу, что некоторые из их скриптов стали неудобными и им необходим графический интерфейс. Например, веб-интерфейс, выбор которого объясняется соображениями безопасности и удобством эксплуатации. Для решения этой задачи рекомендуется ASP, а лучше всего – ASP.NET, который позволяет на порядок повысить безопасность работы приложения.

От VBScript к ASP

У вас может возникнуть вопрос: «Зачем мне переходить на ASP, когда я просто могу использовать DHTML с VBS вставками?» Использовать DHTML или HTA для этих целей не получится, поскольку они основаны на HTML, который действительно позволяет делать вставки на VBScript, однако не поддерживают работу с OLE-объектами. Для программиста, создающего приложения для обслуживания серверов, поддержка OLE-объектов используемой им средой – основное требование, поскольку формирование отчетов, доступ к Active Directory и др. базируется на их использовании.

ASP представляет собой решение, которое поддерживает HTML, OLE-объекты и позволяет делать вставки на различных скриптовых языках: VBScript, JScript.

Переход от VBScript к ASP достаточно прост и безболезнен: исходный код на VBScript остается практически без изменений.

ASP-страницы – это сценарии, программный код которых выполняется при их запросе. Результатом действия скрипта является DHTML-страница, которая формируется на сервере, а затем отображается в браузере клиента. Структура документа на ASP проста: в первой строке всегда указывается язык, с помощью которого созданы скриптовые вставки ASP-страницы. Первая строка любого из сценариев на ASP выглядит следующим образом:

<%Script Language="VBScript"%>

или

<%Script Language="JScript"%>

Программный код, находящийся между <% и %>, выполняется на сервере и подчинен синтаксису одного из выбранных языков. Весь остальной код представляет собой HTML-страницу в явном виде.

Листинг типовой ASP-страницы выглядит следующим образом:

<%@ Language=VBScript CODEPAGE=1251%>

<HTML>

<TITLE> Заголовок страницы  </TITLE>

<HEAD>

<LINK href="../style.css" type=text/css rel=stylesheet>

<meta http-equiv="Content-Type" content="text/html" charset=windows-1251>

</HEAD> <BODY>

<FONT FACE="Arial">

<%

' отображение на экране содержимого переменной

Response.write variable

%>

После обработки интерпретатором IIS программного кода и преобразования результатов его работы в HTML/DHTML необходимо дать команду на отображение страницы в браузере клиента. Такой командой является «Response.Write q», где q – имя переменной, содержащей фрагмент HTML-кода.

Необходимо отметить, что ASP имеет свою, хотя и скромную объектную модель, описание которой можно найти практически в любой книге, посвященной программированию на ASP в разделе «Приложения».

Настройка IIS для ASP

При создании веб-приложений на основе ASP необходимо учитывать некоторые особенности этого языка.

Первая особенность: поскольку код ASP-страниц исполняется на сервере и только результат в виде HTML-страницы пересылается на клиентскую машину, то для успешного запуска приложения на сервере пользователь должен обладать соответствующими правами. IE, IIS и запускаемые им сервисы представляют собой трехзвенную систему (см. рис. 1).

Рисунок 1. Трехзвенная система

Рисунок 1. Трехзвенная система

Пусть IIS имеет настройки по умолчанию. В этом случае при загрузке любой ASP-страницы она стартует от имени встроенного пользователя (см. рис. 2). Если страница работает с некими базами данных, например с Active Directory, то пользователь, запускающий данную страницу, должен обладать соответствующими правами системного администратора.

Рисунок 2. Настройка безопасности IIS

Рисунок 2. Настройка безопасности IIS

Существует несколько способов соблюсти эти условия. Первый – учетную запись встроенного пользователя заменить учетной записью администратора сети. При таком раскладе любой пользователь в сети сможет посетить данную страницу, т.к. она будет запускаться от имени системного администратора. Этот способ предоставляет всем доступ к данной странице, что, согласитесь, неправильно: резко снижается безопасность всей системы. В случае ошибок на странице злоумышленник может легко запустить вредоносный код с правами администратора.

Поэтому разумно использовать другой способ, с помощью которого можно ограничить доступ к ресурсам. В настройках IIS необходимо сбросить флажок (см. рис. 2) с Enable anonymous access и установить его напротив Basic Authentication. Также следует изменить права на файловую структуру используемого сайта, исключив оттуда группу Everyone и добавив соответствующие группы безопасности и назначить им соответствующие права. При такой настройке IIS только системные администраторы получат доступ к данной странице. При попытке любого пользователя, не являющегося администратором сети, получить доступ к странице, IIS будут запрошены имя и пароль пользователя.

Если необходимо расширить круг лиц, которым должен быть доступен данный сайт, и при этом пользователи не являются системными администраторами, то можно воспользоваться вариантом, являющимся синтезом двух ранее изложенных решений. Ограничить доступ на сайт с помощью Basic Authentication и правами на файловую структуру, запускать скрипт, инкапсулированный в страницу, с правами администратора.

Только что мы рассмотрели механизм взаимодействия первого и второго звена в трехзвенной системе. Первым звеном является рабочая станция пользователя, вторым –сервер, на котором установлен IIS. Взаимосвязь этих звеньев осуществляется с помощью одного пользователя. Между вторым и третьим звеном (сервер iis-процессы, порождаемые из asp-процесса) взаимодействие осуществляется с помощью другого пользователя.

Рассмотрим взаимодействие второго и третьего звена подробнее.

При запуске из кода ASP-страницей какого-либо приложения осуществляется взаимодействие между вторым и третьим звеном. IIS порождает процесс, запускаемый от имени другого встроенного пользователя. Поскольку ASP-страница выполняется на сервере, то для запуска приложения необходимы соответствующие права. Управление этой учетной записью пользователя осуществляется в Application Tools (см. рис. 3).

Рисунок 3. Настройка безопасности IIS

Рисунок 3. Настройка безопасности IIS

Переход от VBScript и ASP к ASP.NET

Теперь, когда мы знакомы c ASP и разобрались с настройкой IIS для ASP-проектов, подведем промежуточный итог, а он не утешителен! Дело в том, что в построенной системе большая брешь в безопасности; поскольку для доступа к АD в ASP-файле в явном виде надо указать имя и пароль системного администратора, еще одним недостатком является указание пароля в разделе «Аnonymous Аccess» вместо встроенной учетной записи указать имя и пароль системного администратора. Конечно, системный администратор постарается защитить файловую систему соответствующим распределением прав, однако принятых мер недостаточно. Необходимо сделать так, чтобы система сама определяла и подставляла имя и пароль пользователя между вторым и третьим звеном, т.е. запускала сервисы от имени пользователя, который вошел на сайт. Поставленная задача успешно решается переходом с помощью ASP.NET и включением режима имперсонализации.

Установка Visual Studio

Перед установкой Visual Studio .NET должен быть предварительно установлен пакет программ, необходимых для ее установки:

  • Microsoft IIS 5/6
  • Microsoft .NET Framework 1.1/2.0
  • Microsoft FrontPage Server Extensions 2000/2002
  • Microsoft Visual J# .Net Redistributable Package 1.1/2
  • Microsoft Windows Installer 2/3(.1)

В полном дистрибутиве перечисленные компоненты находятся в папке WCU, в которой присутствуют соответствующие компонентам подпапки. Если же папки WCU нет, то компоненты необходимо загрузить с сайта Microsoft или установить с дистрибутива соответствующей версии операционной системы.

Таблица 1. Необходимые компоненты для установки Visual Studio

Продукт

Источник

Microsoft IIS 5

Входит в состав Windows 2000 – ver 5.0, XP – ver 5.1

Microsoft IIS 6

Входит в состав Windows 2003 Server

Microsoft  .NET Framework 1.1

http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=en

Microsoft  .NET Framework 2.0

http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en

Microsoft FrontPage Server Extensions 2000

Входит в состав Windows 2000, XP

Microsoft FrontPage Server Extensions 2002

Входит в состав Windows 2003 Server; KB13380: http://www.microsoft.com/downloads/details.aspx?FamilyId=3E8A21D9-708E-4E69-8299-86C49321EE25&displaylang=en

Microsoft Visual J# .Net Redistributable Package 1.1

http://www.microsoft.com/downloads/details.aspx?FamilyID=e3cf70a9-84ca-4fea-9e7d-7d674d2c7ca1&DisplayLang=en

Microsoft Visual J# .Net Redistributable Package 2

http://www.microsoft.com/downloads/details.aspx?FamilyID=90cef3f3-9eaf-4d41-bad3-9f44fe8e5e81&DisplayLang=en

Microsoft Windows Installer 2

http://www.microsoft.com/downloads/details.aspx?FamilyID=4b6140f9-2d36-4977-8fa1-6f8a0f5dca8f&DisplayLang=en

Microsoft Windows Installer 3.1

http://www.microsoft.com/downloads/details.aspx?FamilyID=889482fc-5f56-4a38-b838-de776fd4138c&DisplayLang=en

После завершения установки необходимых подпрограмм следует запустить процесс установки студии, после завершения которого необходимо перезапустить ОС и проверить ее работоспособность, создав проект.

Замечание. Для установки Visual Studio без проверки установленных компонентов необходимо запустить процесс установки с ключом:

X:SETUPSETUP.EXE /NO_BSLN_CHECK

Что такое FRAMEWORK

Компания Microsoft поддерживает одновременно несколько языков программирования: Visual Basic, C++, C#. Большая часть функциональных возможностей этих языков совпадает: в каждом из них реализована работа с файловой системой, с базами данных, обработка строк, математические функции. Более того, некоторые из них поддерживают идентичные функции, операторы цикла и условные операторы. Наконец, многие из них имеют похожие типы данных.

Поддержка одних и тех же функциональных возможностей для нескольких языков программирования требует немалых усилий от разработчика, поэтому программисты компании Microsoft задумались над тем, как уменьшить трудозатраты. Результатом их деятельности является библиотека классов .Net Framework Class Library, которая состоит из множества классов, предназначенных для решения различных задач, которые могут встать перед программистом. В настоящее время активно используется .Net Framework, однако все большую популярность приобретает недавно вышедший .Net Framework 2.0.

Пространство имен платформы .Net содержит более 3400 классов, которые организованы в иерархию пространств имен. Например, пространство имен, связанных с работой файловой системы, называется System.IO.

Существует два способа импорта пространств имен в зависимости от метода программирования. Оба они будут рассмотрены ниже на примере импорта пространства имен System.Security.Principal для проверки режима имперсонализации.

Управление доверительными отношениями в ASP NET

Для конфиденциальной работы приложения IIS всегда важно идентифицировать процесс, в котором она выполняется. По умолчанию в IIS 5.0 процессы запускаются утилитой ASPEN_WP.EXE от имени встроенной учетной записи «PC_NAMEASPNET», а в IIS 6.0 – от имени «NT AUTHORITYNETWORK SERVICE».

По умолчанию режим имперсонализации выключен. Для его включения необходимо сделать изменения в конфигурационном файле: C:WindowsMicrosoft.NETFrameWorkV номер версииConfigMachine.Config.

Необходимо присвоить следующие значения:

comAuthenticationLevel= PktPrivacy

comImpersonationLevel= Impersonate

Список возможных значений этих параметров приведен ниже:

comAuthenticationLevel="Default|None|Connect|Call|Pkt|PktIntegrity|PktPrivacy";

comImpersonationLevel="Default|Anonymous|Identity|Impersonate|Delegate"

Для IIS6 необходимо сделать изменения в реестре. В ветви реестра «HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW3SVCParameters» необходимо добавить четыре параметра: AuthentionLevel, CoInitializeSecurityParam, ImpersonationLevel, AuthenticationCapabilities (см. риc. 4).

Рисунок 4. Параметры имперсонализации для IIS6

Рисунок 4. Параметры имперсонализации для IIS6

Параметр CoInitializeSecurityParam принимает значения 0 и 1. Отвечает за включение/отключение использования остальных трех. Все параметры имеют тип REG_DWORD. Описания остальных трех параметров см. в таблице 2.

Таблица 2. Принимаемые значения параметров имперсонализации для IIS6

Имя параметра

Значение

AuthentionLevel

Default

0

None

1

Connect

2

Call

3

Pkt

4

PktIntegrity

5

PktPrivacy

6

ImpersonationLevel

Default

0

Anonymous

1

Identity

2

Impersonate

3

Delegate

4

AuthenticationCapabilities

None

0x0

Mastual_Auth

0x1

Secure_Refs

0x2

Access_Control

0x4

APPID

0x8

Dynamic

0x10

Static_Cloaking

0x20

Dynamic_Cloaking

0x40

ANY_Authority

0x80

Make_FullSic

0x100

Require_FullSic

0x200

Auto_Impersonate

0x400

Default

0x800

Disable_Aaa

0x1000

No-Custom_Marshal

0x1200

Для включения имперсонализации рекомендуется присвоить перечисленным параметрам следующие значения: CoInitializeSecurityParam=1, AuthentionLevel=6, ImpersonationLevel=3, AuthenticationCapabilities=12352.

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

<?xml version=»1.0» encoding=»utf-8» ?>

<configuration>

<system.web>

    <identity impersonate =»true»/>

<authentication mode=»Windows» />

</system.web>

</configuration>

Если необходимо, чтобы механизм имперсонализации работал от имени одного и того же пользователя, то необходимо указать логин и пароль учетной записи в поле :

<identity impersonate ="true"  username="user/domain" password="" />

Проверка имперсонализации осуществляется с помощью функции WindowsIdentity.GetCurrent().Name, которая возвращает имя учетной записи пользователя, от которой будут запускаться процессы.

Если программный код формируется непосредственно в ASPX-файл, то в его заголовке необходимо импортировать пространство имен System.Security.Principal (2-я строчка примера – см. рис. 5).

Рисунок 5. Пример импортирования пространства имен System.Security.Principal в ASPX-файле

Рисунок 5. Пример импортирования пространства имен System.Security.Principal в ASPX-файле

В случае обработки событий в виде функций, необходимо перед описанием класса импортировать пространство имен, о котором уже шла речь, и привязать код к событию, например, к нажатию на кнопку. Для этого сначала необходимо создать в ASPX-файле кнопку (Button1) и в теле соответствующей функции, по умолчанию Button1_Click() добавить функцию WindowsIdentity.GetCurrent().Name (см. рис. 6).

Рисунок 6. Пример импортирования пространства имен System.Security.Principal в VB-файле

Рисунок 6. Пример импортирования пространства имен System.Security.Principal в VB-файле

При включенной имперсонализации на странице должно отобразиться текущее доменное имя пользователя в формате Domain/LogonUser.

Переход от VBScript к ASP.NET

По своей сути ASP представляет собой HTML со вставками VBScript или Jscript (в общем случае), при этом ASP, в отличие от HTML, работает с OLE-объекты. Это принципиальная разница между ASP и DHTML. Вставки на VBScript практически не претерпели изменений за некоторым исключением. Переход от ASP к ASP.NET также достаточно прост, однако есть ряд принципиальных отличий. Об особенностях перехода между этими тремя языками и пойдет речь.

Таблица 3. Сопоставления вызываемых файлов соответствующим приложениям

 

ASP

ASP.NET

Расширение

*.vbs

*.asp

*.aspx

Обработчик

Asp.dll

Aspnet_isapi.dll

Файлы ASP корректно работают под ASP.NET

Для страниц ASP.NET фактически приемлемы любые расширения, в том числе и ASP. Для того чтобы ASP-страницы распознавались файлами платформы ASP.NET, необходимо проделать следующие манипуляции. Изменить ассоциацию ASP-файлов:

  • Запустить Internet Services Manager («Start  Programs  Administrative Tools  Internet Services Manager»).
  • Открыть страницу свойств нужного веб-узла, щелкнув правой кнопкой мыши по нужному узлу и выбрав пункт «Properties».
  • В появившемся диалоговом окне войти во вкладку «Home Directory».
  • В разделе «Application Settings» нажать на кнопку «Configuration».
  • В появившемся диалоговом окне «Application Configuration» выбрать вкладку «App Mapping».
  • Ассоциировать файлы с расширением ASP с библиотекой aspnet_isapi.dll. При этом предварительно необходимо удалить предыдущую ассоциацию ASP.

Внести изменения в конфигурационный файл .NET Framework:

  • Открыть файл machine.config с установленным на компьютере IIS, который находится в C:WindowsMicrosoft.NETFramework[version]config.
  • В разделе [httpHandlers] приведены обработчики для файлов с различными расширениями. В нем должны присутствовать «.asp, .aspx».
  • Необходимо добавить обработчик System.Web.Ui.PageHandlerFactory:

<add

verb="*.*"

path="*.asp"

type=" Web.Ui.PageHandlerFactory,

  System.Web,

  Version=1.0.2411.0,

  Culture=neutral,

  PublicKeyToken=b03f5f7f11d50a3a

  "/>

Оператор Option Explicit

Рассмотрим использование оператора Option Explicit для VBScript, ASP и ASP.NET.

VBScript, ASP

По умолчанию в VBScript допускается неявное объявление переменных. При этом переменная создается без ее предварительного объявления операторами Dim, Private, Public или ReDim. Однако, разрешив неявное объявление переменных в сценариях, велик риск пропустить допущенную синтаксическую ошибку в имени переменной во время программирования.

В том случае, если допущена ошибка, VBScript просто объявит новую переменную и создаст ее, вследствие чего программа будет работать некорректно. Для обнаружения ошибок-опечаток такого рода в первую строку программы необходимо поместить оператор Option Explicit, который сигнализирует оператору о переменных, которые не были объявлены явно.

ASP.NET

Опция Explicit, выключенная по умолчанию в предыдущих версиях ASP, на платформе ASP.NET включена. При включении перед использованием переменной ее необходимо объявить. Например, приведенный ниже сценарий успешно работает на ASP, но на ASP.NET он вызовет ошибку – «The name ‘strMsgBox’ is not declared»:

<%

strMsgBox="Привет"

response.write(strMsgBox)

%>

Исправить ошибку можно двумя способами. Первый способ – объявить переменную strMsgBox явным образом:

<%

Dim strMsgBox As String

strMsgBox="Привет"

response.write(strMsgBox)

%>

Второй способ – отключить на всех страницах ASP.NET в файле machine.config опцию Explicit:

<Compilation>

Explicit = "False"

</Compilation>

Преобразование типов данных

В языке VBScript отсутствуют требования жестко привязать переменную к определенному типу. В нем нельзя объявить тип переменной, в результате чего все создаваемые переменные принадлежат к типу Variant. В ASP.NET этот тип данных не поддерживается. Своеобразным его эквивалентом является тип object. Рассмотрим пример сценария, в котором объявим переменную, и присвоим ей значение, после чего выведем его на экран. В качестве шаблона воспользуемся примером из предыдущего параграфа:

<%

Dim strMsgBox

strMsgBox="Привет"

response.write(strMsgBox)

%>

Обратите внимание, что при объявлении переменной strMsgBox не указан ее тип явным образом, поэтому считается, что она принадлежит к типу Object. При присвоении значения переменной осуществляется автоматическое преобразование к типу String.

Автоматическое преобразование к нужному типу данных очень удобно, однако оно негативно сказывается на скорости работы сценария.

Для определения типа переменной используйте функцию VarType(), возвращающую число, которому соответствует подтип (см. таблицу 4).

Таблица 4. Расшифровка принимаемых значений функцией VarType()

Константа

Значение

Описание

vbEmpty

0

Empty (пустое значение)

vbNull

1

Null (не содержит данных)

vbInteger

2

Integer

vbLong

3

Long integer

vbSingle

4

Single (число с плавающей точкой)

vbDouble

5

Double (число с плавающей точкой)

vbCurrency

6

Currency

vbDate

7

Date

vbString

8

String

vbObject

9

Объект

vbError

10

Error

vbBoolean

11

Boolean

vbVariant

12

Variant (используется только с массивами)

vbDataObject

13

Object

vbByte

17

Byte

vbArray

8192

Array

Синтаксис:

  • VarType(VarName);
  • Varname – имя переменной, содержащей значение.

 

При работе с массивами функция VarType() никогда не возвращает значение 8192. Это связано с тем, что элементы массива содержат данные, которые также соответствуют одному из типов данных. Например, если элементами массива являются числа типа Integer, то функция будет возвращать значения 2 + 8192, т.е. 8194.

VBScript:

Dim Array(100)

T=""

T=VarType(Array)

MsgBox T

ASP, ASP.NET:

<%

Response.Write(VartType(Parametr))

%>

Приведенный пример возвращает значение 8204 = 8192 + 12. Элементы массива не определены, поэтому они имеют тип данных Variant (12).

Процесс автоматического преобразования типов данных называется динамическим связыванием (late binding). Избежать динамического связывания можно с помощью опции Striсt:

<%@ Striсt="True" %>

При включении опции Striсt автоматически включается Explicit. Кроме того, опцию Striсt можно включить для всех страниц ASP.NET в файле machine.config:

<Compilation>

Striсt = "True"

</Compilation>

В отличие от VBScript-сценариев и классических ASPстраниц в ASP.NET при передаче параметров подпрограммам или методам всегда должны использоваться скобки.

Например, приведенный ниже сценарий без ошибок будет выполняться под ASP:

<%

Response.Write "Привет"

%>

Но в ASP.NET он вызовет ошибку, поскольку метод Write необходимо использовать со скобками:

<%

Response.Write ("Привет")

%>

Операторы SET и LET

В VBScript и ASP для присвоения переменных необходимо было использовать переменную SET.

VBScript:

Set obj=CreateObject("Adodb.Connection")

ASP:

<%

Set obj=Server.CreateObject("Adodb.Connection")

%>

На страницах ASP.NET он больше не используется. Синтаксис присвоения переменной объекта выглядит следующим образом.

ASP.NET:

<%

obj=Server.CreateObject("Adodb.Connection")

%>

Также не поддерживается оператор LET.

Поддержка многопоточных компонентов

По умолчанию в ASP.NET не поддерживаются многопоточные методы, такие как ADO Connection, Scripting Dictionary. Для включения их поддержки в заголовке файла необходимо использовать директиву:

<%@  PageASPCompat="True" %>

Обработка ошибок в ASP.NET

Для обработки ошибок предназначен класс System.Exception. Анализируемый на ошибки код заключается внутрь конструкции Try:

Tru Code

<Sample Code>

Cath err as Exception

Response.write(err)

End Try

Для конкретизации ошибки рекомендуется использовать встроенные свойства (см. таблицу 5).

Таблица 5. Описания часто используемых параметров для обработки ошибки

Свойство

Описание

Err

Краткое описание ошибки

Err.Message

Полное описание ошибки

Err.GetType.ToString

Тип ошибки

Err.Source

Источник ошибки (имя библиотеки)

Вместо заключения

Рассмотрев основные этапы перехода с языка VBscript и ASP к ASP.NET, изучив различные подводные камни, вы можете приступить к изучению более сложных вещей, касающихся программирования на ASP.NET: управления файловой системой, Active Directory и т. д.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru