ASP.NET |
|
WWW сервер с точки зрения работы ASP.NET приложений практически полностью совместим с IIS (Microsoft Internet Information Server). Поэтому для их написания достаточно изучить соотв. разделы MSDN. Многие приложения для IIS без доработок запустятся на нем.
Для хостинга ASP.NET приложений используется .NET Framework версии 2.0. Другие версии пока не поддерживаются. В этом разделе далее описаны основные особенности данной реализации ASP.NET -
• | В отличие от IIS, приложение запускается только в режиме отдельного процесса. |
• | В отличие от IIS, имеется только один Application Pool. |
• | Приложение ASP.NET может быть тесно интегрировано со службой Traffic Inspector. Это дает следующее - |
1. | Аутентификация и авторизация используются от WWW сервера Traffic Inspector. Особенности описаны тут. ASP.NET приложение имеет доступ к данным авторизации, типу, ролям и т.д., что позволяет внутри него реализовать свою систему прав. |
2. | Приложению сразу доступно API программы в контексте текущей авторизации. |
Как в приложении это реализовать, описано ниже.
Каждое ASP.NET приложение имеет свой корневой раздел. Этот раздел описывается в списке разделов WWW сервера и для него включается соотв. галка Конфигурировать как ASP.NET сайт. Сразу после этого, спустя 1-2 секунды, сервер запустит хостинг этого приложения. Если это произошло успешно, в списке разделов в колонке ASP.NET появится OK, иначе будет сообщение об ошибке.
Все подкаталоги ASP.NET приложения отдельно конфигурировать не следует. Если их все-же надо прописать с списке разделов с точки зрения назначения отдельных прав или других настроек, то включить там галку Конфигурировать как ASP.NET сайт не надо. В этих подкаталогах также можно переопределять физические пути, но в них не должен размещаться никакой код ASP.NET приложения.
Конфигурацию приложения определяют два файла, размещяемых в его корне - web.config и global.asax. Первый файл обязателен, второй опционален.
Иерархия приложений.
Если ASP.NET приложение имеет подкаталог с другим приложением и оно сконфигурировано, как отдельное ASP.NET приложение галкой Конфигурировать как ASP.NET сайт, то настройки вышестоящего приложения будут игноированы. Более того, обращение к его ресурсам вызовет ошибку обращения к другому приложению.
Если ASP.NET приложение имеет подкаталог с другим приложением, где имеются файлы web.config и global.asax, то для этого приложения также будет наследоваться конфигурация вышестоящего приложения. Эта ситуация подробно описана в MSDN.
Особенности конфигурации web.config для интеграции с Traffic Inspector.
Для интеграции с 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>
Это конфигурация для приложения, куда открыт доступ только для членов группы "Администраторы" (предопределенная группа из раздела Администрирование).
Строчка <add name="TIIdentityModule" type="TrafInsp.TIIdentityModule"/> подключает HTTP модуль для внедрения авторизации Traffic Inspector в приложение. При этом надо обязательно подключить этот модуль строчкой <add assembly="TIAspNet, Version=1.0.0.0, Culture=neutral, PublicKeyToken=B0DFFE2005488D0A"/>. Если приложение будет обращаться к API Traffic Inspector, то также надо подключить модуль - <add assembly="Interop.TrafInsp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=B0DFFE2005488D0A"/>. Оба модуля находятся в GAC, они помещаются туда при установке программы.
В модулях, где используются типы данных от API Traffic Inspector, надо добавлять ссылку на пространство имен -
using TrafInsp; // для C#
Если нужна поддержка сессий в приложении, то добавляется строчка - <sessionState mode="InProc"/>.
Приложению доступны многие переменные окружения через Request.ServerVariables. Доступны как стандартные переменные, так и некоторые другие. Вот список стандартных, выданных тестовой страничкой test.aspx по 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 |
Доступ к данным авторизации, API Traffic Inspector и др. обеспечивается обьектами модуля TIAspNet. Пример обращения к этому модулю приведен в тестовой страничке test.aspx. См. подробное описание его интерфейса.
Отладка ASP.NET приложений.
Для отладки приложения, написанного в VS, используйте операцию Attach to process из меню отладки. Имя процесса - TIASPNETHostServer.exe. Для выхода из отладки используйте Detach. Если по какой-то причине остановите (терминируете) процесс отладки, то службу Traffic Inspector придется перезапустить.
Данные проекта ASP.NET можно менять динамически, не останавливая службу Traffic Inspector. После изменения файлов кода приложения хостинг ASP.NET увидит эти изменения, перезагрузит приложение и броузеру будет возвращена ошибка 503. Запрос после этого следует повторить. Если хостинг не применил изменения, то приложение можно перезагрузить и списка разделов WWW сервера.
Текущая страница справки: help.smart-soft.ru/index.html?asp_net.htm