Для хостинга ASP.NET приложений используется .NET Framework версии 2.0. Поддержка компонентов более старших версий не тестировалась.
Для выполнения ASP.NET приложений в Traffic Inspector предусмотрен отдельный процесс TIASPNETHostServer.exe. Он запускает приложения .NET Framework и передает им для обработки HTTP запросы с веб сервера.
Каждое ASP.NET приложение имеет свой корневой раздел. Этот раздел описывается в списке разделов WWW сервера и для него включается опция Конфигурировать как ASP.NET сайт. Сразу после этого, спустя 1-2 секунды, сервер запустит хостинг этого приложения. Если это произошло успешно, в консоли в списке разделов для колонки ASP.NET появится имя приложения, иначе будет выведено сообщение об ошибке.
Конфигурацию приложения определяют два файла, размещаемых в его корне - web.config и global.asax. Первый файл обязателен, второй опционален.
Иерархия приложений.
Все подразделы также будут сконфигурированы для работы с этим приложением, специально их прописывать в настройках разделов не надо. Если все-таки по каким-то причинам надо прописать подразделы, то для них следует учесть -
• | Если переопределяется физический путь, то никакой код там размещать нельзя. |
• | Конфигурировать отдельное приложение внутри другого нельзя. |
• | Вкладывать одно приложение в другое нельзя. |
Загрузка и запуск ASP.NET приложения будет произведена только по первому запросу. Если приложение некомпилированное, в исходных текстах, то автоматически будет произведена его компиляция.
Отладка ASP.NET приложений.
Для отладки приложения, написанного в Visual Studio, используйте операцию Attach to process из меню отладки. Имя процесса - TIASPNETHostServer.exe. Для выхода из отладки используйте Detach. Если по какой-то причине прервете процесс TIASPNETHostServer.exe, то службу Traffic Inspector придется перезапустить.
Данные проекта ASP.NET можно менять динамически, не останавливая службу Traffic Inspector. После изменения файлов кода приложения хостинг ASP.NET увидит эти изменения, перезагрузит приложение, при этом браузеру будет возвращена ошибка 503. Запрос после этого следует повторить. Если хостинг не применил изменения, то приложение раздела можно перезагрузить с консоли программы.
Особенности реализации ASP.NET.
Для ASP.NET приложений поддерживаются практически все функциональные возможности .NET Framework версии 2.0, в том числе можно использовать без переделок многие приложения для IIS, но имеются важные особенности -
• | Все приложения запускаются в одном Windows процессе. Фатальный сбой одного приложения при использовании незащищенного кода может привести к нарушению работы всех приложений. Это аналогично наличию одного Application Pool в IIS. Механизмов отслеживания "жизнеспособности" хост-процесса в Traffic Inspector нет. |
• | Аутентификация и авторизация производится средствами веб сервера. Для того, что-бы данные авторизации были доступны в приложении, в нем требуется подключение дополнительного модуля TIAspNet - см. ниже. |
• | Для сессий реализован собственный механизм. Использование сессий ASP.NET не рекомендуется. |
Особенности конфигурации web.config.
Для интеграции с Traffic Inspector в файле web.config надо описать некоторые модули, а также там есть другие важные настройки.
Ниже приводится пример фрагмента этого файла -
<configuration>
<system.web>
<httpModules>
<add name="TIIdentityModule" type="TrafInsp.TIIdentityModule"/>
</httpModules>
<compilation>
<assemblies>
<add assembly="TIAspNet, Version=1.0.0.0, Culture=neutral, PublicKeyToken=B0DFFE2005488D0A"/>
<add assembly="Interop.TrafInsp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=B0DFFE2005488D0A"/></assemblies>
</compilation>
<authentication mode="None"/>
<authorization>
<allow roles="Администраторы"/>
<deny users="?"/>
</authorization>
<anonymousIdentification enabled="false"/>
<sessionState mode="InProc"/>
</system.web>
</configuration>
Подключение сборки TIAspNet для приложения обеспечивает ему доступ к API. Этот модуль также содержит класс TIIdentityModule, задача которого трансляция данных авторизации различным классам ASP.NET, использующим данные авторизации, например, для разграничения прав. См. пример ниже.
Сборка Interop.TrafInsp содержит описание COM API Traffic Inspector.
Обе этих сборки находятся в GAC, они туда помещаются при установке Traffic Inspector.
Элемент <sessionState mode="InProc"/> опционален. По умолчанию это включено . Не следует делать mode="off", это отключит важный внутренний функционал ASP.NET и нарушит полноценное использование сессий для этого приложения. В этом элементе конфигурации можно переопределить таймаут сессий.
В этом примере приведено использование авторизации для разграничения прав средствами ASP.NET.
Строчка <anonymousIdentification enabled="false"/> запрещает анонимный доступ, доступ разрешен только для членов группы Администраторы. Отметим, что именно это поддерживается подключением класса TIIdentityModule.
В файл конфигурации также можно добавить описание приложения -
<appSettings>
<add key="AppInfo" value="Мое приложение"/>
</appSettings>
При загрузке приложения это имя будет отображено в списке разделов консоли.
Программное окружение ASP.NET приложения.
Приложению доступны многие переменные окружения через Request.ServerVariables. Доступны как стандартные переменные, так и некоторые другие. Вот список стандартных, выданных тестовой страничкой по SSL запросу -
Name |
Value |
ALL_HTTP |
HTTP_CONNECTION:Keep-Alive HTTP_ACCEPT:image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */* HTTP_ACCEPT_ENCODING:gzip, deflate HTTP_ACCEPT_LANGUAGE:ru HTTP_AUTHORIZATION:NTLM TlRMTVNTU..... HTTP_COOKIE:.ASPXANONYMOUS=4x4yqUWMxwEkAAAANjEzNGZlOWYtZjQzMy00ZGZjLThjODktMDYwYTMwMjNkOWU3c-MVuJJF2nNts_ff8luN-fn6qa81 HTTP_HOST:10.1.1.251 HTTP_USER_AGENT:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30) HTTP_UA_CPU:x86 |
ALL_RAW |
Connection: Keep-Alive Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */* Accept-Encoding: gzip, deflate Accept-Language: ru Authorization: NTLM TlRMTVN... Cookie: .ASPXANONYMOUS=4x4yqUWMxwEkAAAANjEzNGZlOWYtZjQzMy00ZGZjLThjODktMDYwYTMwMjNkOWU3c-MVuJJF2nNts_ff8luN-fn6qa81 Host: 10.1.1.251 User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30) UA-CPU: x86 |
APPL_MD_PATH |
|
APPL_PHYSICAL_PATH |
c:\Program Files\TrafInsp\Root\TestASPNET |
AUTH_TYPE |
Admin_TIUser |
AUTH_USER |
domain\test |
AUTH_PASSWORD |
|
LOGON_USER |
|
REMOTE_USER |
domain\test |
CERT_COOKIE |
|
CERT_FLAGS |
|
CERT_ISSUER |
|
CERT_KEYSIZE |
|
CERT_SECRETKEYSIZE |
|
CERT_SERIALNUMBER |
|
CERT_SERVER_ISSUER |
DC=ru, CN=TEST |
CERT_SERVER_SUBJECT |
CN=SERVER |
CERT_SUBJECT |
|
CONTENT_LENGTH |
0 |
CONTENT_TYPE |
|
HTTPS |
1 |
HTTPS_KEYSIZE |
128 |
HTTPS_SECRETKEYSIZE |
1024 |
HTTPS_SERVER_ISSUER |
DC=ru, CN=CA |
HTTPS_SERVER_SUBJECT |
CN=SERVER |
PATH_INFO |
/webstat/test.aspx |
PATH_TRANSLATED |
c:\Program Files\TrafInsp\Root\TestASPNET\test.aspx |
QUERY_STRING |
/TestASPNET/test.aspx |
REMOTE_ADDR |
10.0.0.11 |
REMOTE_HOST |
server.local |
REMOTE_PORT |
1856 |
REQUEST_METHOD |
GET |
SCRIPT_NAME |
/TestASPNET/test.aspx |
SERVER_NAME |
server |
SERVER_PORT |
443 |
SERVER_PORT_SECURE |
1 |
SERVER_PROTOCOL |
HTTP/1.1 |
SERVER_SOFTWARE |
TI-ASP.NET/1.0.0.0 |
URL |
/TestASPNET/test.aspx |
HTTP_CONNECTION |
Keep-Alive |
HTTP_ACCEPT |
image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */* |
HTTP_ACCEPT_ENCODING |
gzip, deflate |
HTTP_ACCEPT_LANGUAGE |
ru |
HTTP_AUTHORIZATION |
NTLM TlRMTV.................... |
HTTP_COOKIE |
.ASPXANONYMOUS=4x4yqUWMxw.... |
HTTP_HOST |
10.0.0.11 |
HTTP_USER_AGENT |
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30) |
HTTP_UA_CPU |
x86 |
Через модуль TIAspNet приложению доступно следующее -
• | Доступ к API администрирования Traffic Inspector. Доступно в любом контексте, вызов TrafInsp.TIIdentity.Current.TI возвратит ссылку на интерфейс ITrafInspAdmin с соответствующей авторизацией. Конечно, приложение может само запросить этот интерфейс через COM, однако в этом случае приложению придется произвести авторизацию отдельно. |
• | Запись и чтение данных из сессии. Могут сохраняться любые данные, поддерживающие сериализацию. Доступно в любом контексте через класс Session по ссылке TIAspNet.Session.Current. |
• | Хранение данных в профилях. Могут сохраняться любые данные, поддерживающие сериализацию. |
В документе приведен экспорт публичного интерфейса модуля TIAspNet.
Текущая страница справки: http://help.smart-soft.ru/doc20/index.html?sdk_asp_net.htm