ASP.NET

Previous pageReturn to chapter overviewNext page

 

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

Сайт разработчиков Traffic Inspector