Iis события активных серверных страниц (asp)


Содержание

Iis события активных серверных страниц (asp)

ASP — это активные серверные страницы для Internet Information Services, ту бишь сервера IIS. Задумка от Мелкомягких. С ней умеют работать все окошки начиная с XP Pro и так далее. Для программирования с ASP используется VBS (Visual Basic Script) и JS (JScript). Понять эти скрипты сможет даже домохозяйка. Скрипты встраиваются в HTML страницу (HyperText Markup Language), а запросы ASP интерпретируются и выполняются на стороне сервера. ASP поддерживает связь с COM-компонентами и это может существенно сэкономить тебе время. Например, если тебе нужно написать программу для обработки каких-нибудь рисунков, а ты даже ещё и не начал разбираться в этой области, не паникуй, подключи нужный COM-компонент и вызывай его уже готовые функции там, где тебе это необходимо.

Наверное, ты уже сейчас думаешь, — «а на кой мне этот ASP дался?». И ты прав, ведь есть PHP, который уже давно служит народу. Это факт что php обычно работает быстрее asp, но скорость никогда не была сильной стороной Microsoft. Зато в работе с MS SQL ASP справляется намного быстрее, что определяет его применение в БД небольших предприятий. И не забудем сказать спасибо Билли за IIS, ведь это очень удобная штука. На нем можно тестить как php так и asp сразу. [p]Итак, как установить и настроить сервер IIS на твоей машинке? Здесь всё просто, заходим в «ПУСК» >> «Панель управления» >> «Установка и удаление программ» >> «Установка компоненков Windows» >> и ставим галочку на «Intenet Information Services (IIS)». После нажатия на кнопку «готово», всё действительно готово :) Это можно проверить если набрать в ослике http://localhost или http://127.0.0.1, он послушно откроет страницу http://localhost/iisHelp//iis/misc/default.asp. А чтобы IIS стал работал с твоим ASP файлом, его необходимо разместить в папку ..\Inetpub\wwwroot.

Вообщем то, всё готово. Эм.. Опробуем? Создадим в блокноте файл, назовем его test.asp, запишем в него:

Как ты уже успел заметить, синтаксис ASP похож на языки высокого уровня. И это не случайно, ведь сам ASP языком программирования не является, это внутренняя техноголия, позволяющая подключать программы к web-страницам. Что мне очень нравится в ASP так это то, как просто к нему подключаются БД. Ты ведь уже знаешь с чем «едят» БД Microsoft Access? Тогда давай научимся подключать их к web-страницам при помощи ASP. Итак, нам понадобится Бд Access, создадим её и назовем «UIN». Создадим в ней таблицу «uins» с полями «uin»[тип-числовой] и «price»[тип-числовой]. Не забудь сохранить файл в каталоге wwwroot и теперь создавай файл ASP:

Этого вполне хватит, для открытия своего маленького магазинчика по продаже UIN’ов. Но это уже совсем другая история :)

Способы организации активных web-серверов

ISAPI

Если Web- сервер создан на базе Microsoft Internet Information Server , вместо программ CGI можно использовать приложения ISAPI , реализованные в виде библиотек динамической загрузки DLL , что позволяет повысить производительность и масштабируемость . Приложения ISAPI условно делятся на расширения ISAPI и фильтры ISAPI .

Расширения ISAPI

Расширения ISAPI выполняют те же функции, что и программы CGI : обычно они применяются для обработки клиентских запросов и возвращения ответа в формате HTML.

Каждый раз, когда удаленный пользователь обращается к расширению CGI , на сервере Web запускается программа, которая выполняется как отдельный процесс, причем в собственном адресном пространстве. На запуск процесса требуется время, и если ваш сервер пользуется популярностью, то программы CGI могут полностью его загрузить. В результате увеличится время реакции сервера, что может оттолкнуть от него пользователей.

Для повышения производительности в некоторых Web-серверах (в частности, Microsoft Internet Information Server) используется другой способ создания расширений. Расширение создается как библиотека динамической загрузки DLL с использованием программного интерфейса ISAPI ( Internet Server API).

Когда такое расширение активизируется в первый раз, оно загружается в адресное пространство процесса Web-сервера и начинает свою работу. В памяти всегда находится только одна копия соответствующей библиотеки DLL, поэтому при одновременном обращении к расширению ISAPI нескольких пользователей системные ресурсы расходуются более экономно, и, кроме того, не тратится время на дополнительные загрузки расширения.

Программирование приложений ISAPI представляет собой более сложную задачу, нежели создание программ CGI . Поскольку такие приложения всегда работают в мультизадачном режиме, необходимо обеспечить синхронизацию доступа к критичным ресурсам. Ошибки в приложениях ISAPI могут привести к аварийной остановке сервера Web, а вот при использовании программ CGI это маловероятно.

ISAPI -расширения явно указываются в URL-адресе, отправляемом на IIS-сервер: Например: http://localhost/sayhelloisapi/sayhelloisapi.dll

ISAPI -расширение можно вызывать с параметрами, которые позволят одному компоненту выполнять разные задачи.

Сервер IIS версии 4.0 и старше позволяет загружать программы ISAPI в отдельное адресное пространство . Эта возможность, замедляющая работу сервера, обычно используется для отладки новых программ. Аварийное завершение программы ISAPI , загруженной в отдельное адресное пространство не приводит к полной остановке Web-сервера.

В результате расширения ISAPI работают быстрее по сравнению с программами CGI , поскольку для программ CGI для каждого пользователя приходится запускать отдельный процесс.

Однако приложения ISAPI приходится отлаживать намного тщательнее, чем программы CGI . Так как приложение ISAPI работает в адресном пространстве Web-сервера, ошибка в приложении ISAPI способна вызвать аварийное завершение работы Web-сервера.

Фильтры ISAPI

Фильтры ISAPI , так же как и расширения ISAPI , реализованы в виде библиотек динамической загрузки DLL и способны контролировать весь поток данных между браузером и Web-сервером на уровне протокола HTTP.

ISAPI -фильтры никогда не вызываются явно — IIS-сервер обращается к ним в ответ на определенные события в процессе выполнения запроса:

  1. на завершение обработки сервером предоставленных клиентом заголовков;
  2. на завершение сервером процедуры аутентификации клиента;
  3. на сопоставление сервером логического URL-адреса физическому;
  4. до начала пересылки «сырых» данных от клиента на сервер;
  5. на завершение пересылки «сырых» данных от клиента, но до начала их обработки на сервере;
  6. на регистрацию информации сервером в журнале;
  7. на завершение сеанса.

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

ISAPI -расширения часто создаются с использованием ISAPI -классов библиотеки MFC (Microsoft Foundation Class Library ). Это значительно упрощает разработку ISAPI -расширений.

Активные страницы ASP

Active Server Pages ( ASP ) — это серверная среда для разработки и выполнения динамических интерактивных веб-приложений .

Технология ASP предполагает интенсивное использование серверных сценариев и объектов СОМ для создания активных Web-серверов.

Языки программирования, используются для создания больших и сложных программных комплексов. Языки написания сценариев используются для создания программ ограниченных возможностей, называемых сценариями, которые выполняют функции web-узла на web-сервере или в браузере. В отличие от сложных языков программирования, языки написания сценариев интерпретируются: инструкции последовательно выполняются промежуточной программой, называемой интерпретатором команд . Хотя интерпретация уменьшает эффективность выполнения, языки написания сценариев просты для изучения и обеспечивают большие возможности. Сценарии могут быть встроены в HTML -страницы для форматирования содержимого или могут реализовывать компоненты COM , заключающие в себе бизнес-логику.

Файл Active Server Pages ( ASP ) представляет собой текстовый файл с расширением «. asp «. Этот файл может содержать текстовые данные, тэги языка HTML и серверные сценарии.

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

Когда пользователь обращается к странице ASP , Web- сервер вызывает веб-сервер расширение ASP для обработки указанного в запросе файла, которое интерпретирует расположенный в ней сценарий . При этом анализируются параметры, переданные этой странице. Далее страница модифицируется (или создается заново), а затем отправляется обратно пользователю.

В ASP отсутствует ориентация на конкретный язык программирования , поэтому знакомства с любым языком сценариев ( VBScript , JScript или PERL) будет достаточно для того, чтобы работать с Active Server Pages. Более того, на страницах ASP допускается использование любого языка сценариев, для которого был установлен COM -совместимый обработчик сценариев. Обработчик сценариев — это программа , которая обрабатывает команды, записанные на определенном языке. В состав ASP входят обработчики сценариев VBScript и JScript , но имеется дополнительная возможность установки обработчиков для языков PERL, REXX и Python , которые могут быть получены от независимых разработчиков. Обработчик сценариев представляет собой расширение ISAPI , которое физически является динамически подключаемой библиотекой ASP.DLL . ASP.DLL просматривает файлы .asp на предмет наличия тэгов, обозначающих внедренный код для выполнения на сервере. ASP.DLL передает код сценария в Windows Script Host (WSH). WSH выполняет этот код и возвращает ответ файлу ASP.DLL , который, в свою очередь , передает IIS результат выполнения сценария и содержимое самого файла ASP . IIS возвращает ответ программному обеспечению, от которого поступил запрос .

Средствами технологии ASP можно создавать интерактивные Web-страницы, не используя расширения CGI или ISAPI , что позволяет в ряде случаев полностью избежать или максимально сократить программирование на C++ или Perl. Активные страницы ASP выполняют обработку данных, введенных пользователями при помощи форм, обращаясь при необходимости к базам данных или другим активным объектам .

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

ASP поддерживает технологию работы со сценариями Windows Script Components. Она позволяет поместить все сценарные процедуры, выполняющие бизнес-логику, в COM -компоненты. Эти компоненты допускают повторное использование, и могут работать как в web-приложениях, так и в других программах, построенных по технологии COM .

ASP поддерживает новую служебную программу шифрования сценариев, поставляемую с MicrosoftVisual Basic Scripting Edition ( VBScript ) и Microsoft® JScript 5.0. Имеется возможность шифровать как клиентские, так и серверные сценарии, в результате чего тексты сценариев будут отображаться бессмысленной последовательностью ASCII-символов. Зашифрованные сценарии расшифровываются обработчиком сценариев во время их выполнения, поэтому нет необходимости в использовании отдельной программы расшифровки. Несмотря на то, что это не является полностью безопасным решением, технология не позволяет большинству обычных пользователей скопировать или просмотреть сценарий .

Серверный сценарий , встроенный в страницу ASP , способен обращаться к базам данных через вызов методов интерфейса ActiveX Data Objects ( ADO ) — простую и понятную процедуру. Если возникнет необходимость реализовать собственную бизнес-логику, имеется возможность создания новых объектов СОМ или использования объектов СОМ сторонних разработчиков.

Работаем с журналами IIS 5.0

Перенос журнала событий Web-сайта на SQL-сервер упрощает анализ данных

По умолчанию файлы журнала событий Web-сервера хранятся на сервере с Microsoft Internet Information Services 5.0. Конечно, функцию накопления данных можно отключить, но, как правило, администратор заинтересован в наиболее полной и подробной информации о работе пользователей своего Web-сайта. Как и IIS 4.0, версия IIS 5.0 позволяет выбрать формат накапливаемых данных и записать их напрямую в базу. Лично я предпочитаю накапливать журнальные данные в файлах в формате World Wide Web Consortium (W3C) Extended Log File Format, после чего импортировать содержимое файлов в базу данных Microsoft SQL Server. Далее я покажу, как задать такой алгоритм накопления данных, и расскажу о небольших отличиях в реализации сбора данных в версиях IIS 4.0 и IIS 5.0.

Регистрация данных в формате W3C

По умолчанию функция сбора данных о событиях Web-сервера включена. Для более тонкой настройки этого процесса используется Internet Ser-vices Manager (ISM) 5.0, во многом подобный Internet Services Manager 4.0. Сам процесс накопления данных изменился мало, к тому же он поддерживает те же он самые форматы файлов данных, что и IIS 4.0:

  • W3C Extended Log File Format (exyymmdd.log);
  • Microsoft IIS Log File Format (inyymmdd.log);
  • National Center for Supercomputing;
  • Applications (NCSA) Common Log;
  • File Format (ncyymmdd.log);
  • ODBC Logging format.

Имена тех файлов, данные в которых накапливаются ежедневно (день за днем), заключены в круглые скобки после собственно данных. В статье Microsoft «W3SVC and IIS Log File Names Are Listed with NCSA Format in HTMLA» (http://support.microsoft.com/support/ kb/articles/q240/0/27.asp) отмечается, что в документации на IIS 5.0 приведен некорректный префикс для имен файлов. Однако в документации, которой пользовался я, все выглядит так, как и должно быть.

Одно из различий между IIS 5.0 и IIS 4.0 состоит в том, что IIS 5.0 поддерживает настройку регистрации ODBC-обращений только для продуктов линии Windows 2000 Server, но не для Windows 2000 Professional.

Я предпочитаю использовать формат W3C Extended Log File Format, поскольку он позволяет собирать больше данных, чем любой другой, а кроме того, я могу указать, какую именно информацию следует собирать. По умолчанию в IIS 5.0 W3C при регистрации событий используется время в формате Universal Time Coordinate (UTC). Термин новый, но «показания» UTC-часов соответствуют временной зоне Greenwich Mean Time (GMT), которая, в свою очередь, используется в IIS 4.0. Версия IIS 5.0 использует UTC-время (не локальное время) компьютера для определения момента создания нового файла, а все упоминания о времени в журнальном файле базируются на UTC. Если серверы компании разбросаны «по странам и континентам», применение UTC может оказаться просто обязательным условием при проведении процедуры синхронизации.

Экран 1. Дополнительные параметры регистрации событий. Вкладка General Properties.

Но если серверы расположены в одном месте, то можно ориентироваться на локальное время. IIS 5.0 предоставляет такую возможность, и процесс именования, и время создания новых файлов будут определяться на основе показаний локальных часов. Откройте ISM, укажите сервер, раскройте контекстное меню Web-сайта и выберите Properties. Затем нужно щелкнуть на вкладке Web Site, убедиться, что выбран формат данных W3C, и щелкнуть Properties. На вкладке General Properties (см. Экран 1) требуется установить флажок Use local time for file naming and rollover. Если используется версия IIS 4.0 Service Pack 4 (SP4) или более поздняя, локальное время тоже можно задействовать, но для этого придется редактировать реестр.

Экран 2. Дополнительные параметры регистрации событий. Вкладка Extended Properties.

На Экране 2 показано окно, используемое для настройки дополнительных параметров регистрации событий в формате W3C. Обратите внимание, что IIS 5.0 использует для этого представление параметров в виде дерева, а не списка, как это было в IIS 4.0. Кроме того, в IIS 5.0 в скобках в конце выбранного параметра регистрации указывается имя параметра в том виде, в каком оно будет записано в журнальном файле. Это на самом деле очень удобно, когда приходится сопоставлять содержимое файла и те параметры, которые хотелось бы регистрировать.

За редким исключением, дополнительные параметры регистрации IIS 5.0 и IIS 4.0 почти полностью совпадают. Характеристика HTTP Status в IIS 4.0 в версии IIS 5.0 названа Protocol Status, хотя в документации на IIS 5.0 она именуется по-старому — HTTP Status. Host property — новый параметр, появившийся в IIS 5.0; он содержит имя сервера. Если активизировать Process Accounting для IIS 5.0, то Web-сервер станет регистрировать дополнительный набор записей W3C.

Кто обращался к разделу Logging Properties Reference, тот, наверное, заметил, что оперативная документация по IIS 5.0 может ввести в заблуждение. Я воспроизвожу часть этой документации, взяв на себя смелость исправить некоторые ошибки и изменить заголовки колонок, чтобы таблицы стали более понятными. В Таблице 1 описаны префиксы для имен W3C-параметров так, как они выглядят в журнальных файлах. Каждый префикс сопровождается описанием действия, с которым он непосредственно связан. В Таблице 2 даны параметры W3C и информация, относящаяся к Protocol Status. В Таблице 3 показаны новые W3C-параметры при активизированном процессе Process Accoun-ting, и, наконец, в Таблице 4 описываются значения параметра Process Event для Process Accounting.

Экран 3. Заголовок W3C-файла.

Всякий раз, когда IIS 5.0 создает журнальный файл W3C, в начало файла помещается заголовок наподобие того, что изображен на Экране 3. Первая строка заголовка указывает на тип сервера, вторая — на версию журнального файла, третья — на дату и время создания самого файла, и, наконец, последняя строка представляет собой разделитель из пробелов, отделяющий заголовок от собственно данных, представленных в файле в виде таблицы. Причем если поле в журнальном файле изменить, IIS 5.0 «поставит» новый «штамп» в его заголовок, после чего накопление данных продолжится с учетом внесенных изменений. Если впоследствии журнальный файл импортируется в базу данных, следует убедиться, что все новые поля успешно в ней размещены.

Импорт файла в SQL-сервер

Если требуется организовать анализ журнальных данных, нужно импортировать содержимое файла событий в базу данных и написать соответствующие запросы. Для работы непосредственно с журнальными данными в том виде, в каком они создаются сервером IIS 5.0, также имеется несколько конфигурационных параметров. Вместо W3C, можно выбрать ODBC-формат представления событий и записать данные непосредственно в базу SQL или другую базу, поддерживающую ODBC. Однако такой подход, когда запись выполняется всякий раз при возникновении того или иного события, приводит к очень интенсивному использованию ресурсов системы, поэтому я предпочитаю для загрузки в базу файлов W3C применять службу Data Transformation Services (DTS). DTS читает данные из текстового файла, созданного IIS 5.0, и затем импортирует их в SQL-сервер. Поскольку DTS запускается только после того, как IIS 5.0 закроет журнальный файл, обновление базы можно выполнять в пакетном режиме. В этом случае нагрузка на серверы SQL и IIS 5.0 меньше, чем при записи обновлений в оперативном режиме.

Как обычно при использовании DTS, для импорта данных из W3C в базу данных SQL следует создать задачу (task) на SQL-сервере, которая будет выполнять несколько работ (job). Можно составить расписание для IIS 5.0 таким образом, чтобы закрывать журнальный файл в определенное время суток и запускать DTS-задачу сразу после того, как файл будет закрыт. Первым делом нужно будет скопировать закрытый журнальный файл во входной набор для импорта или просто переименовать журнальный файл.

Экран 4. Первые две строчки входного файла.

Далее, созданная задача должна выделить заголовок из входного файла, удалив целиком первые три строки заголовка, а также подстроку «#Fields:» из четвертой строки заголовка. Теперь файл содержит только одну строку в заголовочной части, и в ней указано имя каждого поля. На Экране 4 показаны первые две строки — строка заголовка и одна строка данных для журнального файла, содержащего шесть полей. Последнее, что должна сделать DTS-задача, — запустить DTS-процедуру (DTS package) загрузки данных из входного файла в базу данных.

Но прежде следует создать саму базу и DTS-процедуру. Можно поручить самой DTS-процедуре позаботиться об этом, однако я рекомендую создать базу самостоятельно. Это позволит указать колонки, корректно описав тип соответствующих данных и тем самым упростив запросы на обработку самих данных. Кроме того, можно будет именовать колонки по своему усмотрению и, используя DTS, установить отображение пространства имен полей во входном файле и колонок в базе данных. В моем случае была создана база данных SQL Server 2000 с именем Iislogs. В Листинге 1 приведена спецификация Data Defi-nition Language (DDL), в соответствии с которой в базе была сформирована таблица Inlogdata.

Чтобы создать DTS-процедуру, я запустил SQL Server 2000 Enterprise Manager, раскрыл Data Transformation Services, обратился в контекстное меню Local Packages и выбрал New Package. Открылся DTS Designer. Затем, щелкнув Connection в верхней части панели инструментов, я выбрал тип соединения Text File и с помощью стандартного окна проводника указал входной файл с журнальными данными. Далее я щелкнул кнопку Proper-ties — открылось окно с описанием свойств соединения. На первой странице с помощью кнопки Delimited я установил флажок First row has column names, а остальные параметры оставил без изменений.

Кнопка Next позволяет перейти на вторую страницу свойств соединения, на которой я выбрал переключатель Other и ввел символ пробела в качестве разделителя колонок для DTS-процедуры. В этот момент в нижней части окна свойств можно увидеть правильное описание колонок будущей таблицы. Теперь нужно щелкнуть Finish и OK, чтобы закрыть окно Properties.

Затем я добавил второе соединение. В качестве Data Source я указал Microsoft OLE DB Provider for SQL Server и выбрал из предложенного списка свой сервер SQL, после чего ввел имя и пароль для доступа к базе данных. Была выбрана база Iislogs.

В заключение я «перетащил» задачу Transform Data из панели инструментов (в левой части окна) и выбрал первое из созданных соединений в качестве источника данных, а второе — назначения данных. Сохраняем процедуру. Щелчок по кнопке Execute инициирует немедленное ее выполнение. На Экране 5 показан Enterprise Manager с перенесенными в базу данных данными из журнала.

Рисунок 5. Enterprise Manager с перенесенными в БД данными.

Анализ данных

После того как данные помещены на SQL-сервер, можно использовать SQL для доступа к данным и их анализа. Например, следующее предложение SQL выбирает все данные в журнальной таблице:

Можно выбрать журнальные данные, относящиеся к конкретному серверу:

Не нужно быть экспертом в области SQL или баз данных, чтобы воспользоваться данными SQL-сервера. Для формирования запросов и последующего анализа данных можно воспользоваться такими программами, как Microsoft Excel, Microsoft Access или Seagate Crystal Reports.

При использовании формата данных W3C для поиска ошибок приложений удобно применять поле Win32 Status. Например, чтобы узнать, что означает цифра 5 в поле Win32 Status, пишем следующую команду:

и видим на экране текст сообщения об ошибке: «Access is denied.»

В статье Microsoft «IIS `Bytes Sent` (Sc-bytes) Logging Property Is 0 for ASP Files» http://support.microsoft.com/support/ kb/articles/q254/7/18.asp) отмечается, что поле Bytes Sent (W3C-формат) может вернуть 0, когда для приложения Active Server Pages (ASP) включена буферизация данных. Эту функцию рекомендуется отключить, тогда В Bytes Sent будет возвращать корректные данные, правда, за счет заметного снижения производительности самого приложения.

Как и при других подобных операциях, обслуживать и анализировать данные журналов вручную неудобно. Комбинируя возможности журнальной регистрации IIS 5.0 и SQL Server DTS, можно автоматизировать процесс загрузки данных в базу SQL и облегчить их дальнейший анализ.

Можно также воспользоваться такими программами, как Commerce Server 2000 Business Analytics. Другой вариант — приобрести программный пакет для анализа данных журналов регистрации. Например, в составе WebTrends Log Analyzer уже имеются отчеты, которыми можно воспользоваться для анализа происходящих на сайте событий.

И наконец, можно совсем отключить сбор журнальных данных и написать Internet Server API (ISAPI) — фильтры для перехвата данных из заголовков пакетов HTTP. Другими словами, имеется большой выбор возможностей для сбора и анализа информации о работе Web-сайта.

Диспетчер служб Интернета IIS (Internet Information Services)

Читайте также:

  1. Corporate Information Factory, Корпоративное хранилище данных
  2. GPRS служба изнутри
  3. Information sources of foreign media. World news agencies
  4. Information System
  5. Information technologies in translation
  6. Kazakh media in the global information space. Communication studies and journalism. Internet.
  7. Management Information Systems
  8. SCADA как система диспетчерского управления
  9. Stylistics and information theory
  10. А можно ли точно очертить границы Интернета, если он так тесно встроен в общую инфраструктуру операторов связи?
  11. Административное устройство интернета.
  12. АИС налоговой службы

Internet Information Services (Пуск/Настройка/Панель управления/Администрирование/Диспетчер служб Интернета) позволяет настраивать и администрировать web-, ftp-, smtp- и nntp- (группы новостей) сервисы на машине. Из-за постоянных проблем с безопасностью рекомендуется не использовать IIS и даже не устанавливать его на компьютер (например, в качестве web-сервера лучше использовать Apache).

Создать Web-сервер можно следующим образом: Выделить сервер/Контекстное меню/Создать/Узел Web/Отвечать на вопросы мастера: указать имя узла, IP-адрес (содержимое Web-узла или отдельные катало-ги могут находиться как на данном сервере, так и на других компьютерах в сети), порт, каталог, разрешения (чтение, запуск сценариев, выполнение CGI-приложений, запись, обзор). Аналогично создается узел ftp, виртуальный почтовый сервер SMTP и виртуальный сервер новостей SMTP.

Настройка сервисов осуществляется следующим образом: «Выделить Web-узел (ftp, smtp, nntp)/ Контекстное меню/Свойства/». Можно устанавливать домашний каталог сервиса и определить разрешения для него (чтение, запись, обзор каталога, доступ к тексту сценария, запись в журнал, индексация каталога), запретить доступ к web(ftp)-узлу с определенных IP- или URL-адресов, устанавливать времени отключения не отвечающего пользователя, предельное число подключенных пользователей, вести журнал подключений, разрешать или запрещать анонимное подключение, просматривать текущие подключения к серверу, настро-ить вид html-страниц, возвращаемых пользователю при возникновении ошибок, название html-страницы, отображаемой по умолчанию и т.д. В меню «Выделить сервер/Свойства» можно ограничить полосу пропускания для всех web- и ftp-узлов данного компьютера, ограничив нагрузку на сеть, например величиной 1024 Кбит/с.

Особенностью IIS является поддержка активных серверных страниц (Active Server Pages, ASP). ASP позволяет динамически формировать HTML-страницы. ASP-файл представляет из себя документ HTML, в текст которого включены команды сценария ASP. Перед выдачей ASP-файла клиенту web-сервер обрабатывает команды ASP-сценария и динамически формирует HTML-страницу. Языком написания ASP-сценариев является VBScript (хотя могут использоваться языки JavaScript и Perl). Команды ASP-сценария встраиваются в HTML-страницу при помощи тэгов или . Отличием ASP-сцена-риев от обычных сценариев на языке VBScript/JavaScript является то, что если обычные сценарии выпол-няются на стороне клиента, то команды ASP-сценария выполняются на стороне сервера и пользователь получает «готовый» HTML-документ без всяких тэгов (только если сам ASP-сценарий не сформировал новые тэги

Примечание: если на компьютере установлен IIS 5.0, то достаточно полную справку по IIS и ASP можно получить, набрав в браузере Internet Explorer адрес http://localhost/iisHelp/iis/misc/default.asp. (как следует из адреса, подключение к Internet для этого не требуется :).

Дата добавления: 2014-01-20 ; Просмотров: 1169 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

.asp и .aspx 2020

ASP является основой для веб-разработки и поддерживает различные модели, такие как классический ASP, веб-формы ASP.NET, ASP.NET MVC, веб-страницы ASP.NET, API ASP.NET и ядро ​​ASP.NET.

ASP и ASP.NET — это серверные технологии, выполняющие код на веб-сервере.

Активные страницы сервера (ASP), разработанные Microsoft, такие же, как страницы HTML, содержащие скрипты и встроенные носители, а затем обработанные на веб-сервере. В прошлом (с классическим ASP) он был развернут только в среде Microsoft.

Активные серверные страницы имеют расширения файлов .asp (для классического ASP) или .aspx (для ASP.NET)

Когда веб-пользователь инициирует запрос, вызывая страницу ASP или ASP.NET, веб-сервер обрабатывает Активные страницы сервера и механизм сценариев генерирует содержимое, отображаемое обратно (на лету) веб-пользователю. ASP работает с любым браузером, поддерживающим HTML (как вывод HTML).

Активные страницы сервера представить интерфейсные веб-приложения, выполнив ActiveX скриптов и компонентов, вставленных в веб-страницы.

ActiveX похож на Java-апплеты и использует объектно-ориентированные технологии для программистов для более эффективного создания мощных и динамичных веб-приложений. Эти скрипты и компоненты упаковываются как элементы управления ActiveX, которые многократно используются и могут использоваться разными программистами и программами.

ASP.NET был впервые выпущен в 2002 году в .NET Framework 1.0, и заменил Classic ASP, который выпустил три версии в период с 1996 по 2000 год.

Последняя версия Classic ASP была выпущена в ноябре 2000 года как ASP 3.0 для IIS 5.0 и до сих пор официально поддерживается Microsoft до 2020 года.

Это может быть классический, но ASP по-прежнему является мощным подходом к динамическим веб-страницам.

Классический ASP

Первоначально ASP была дополнением для Microsoft IIS (Internet Information Server), однако, с выпуском Windows Server 2000, он стал постоянным и свободным компонентом IIS.

Microsoft Internet Information Services — настраиваемый и модульный механизм веб-сервера Microsoft, который поддерживает протоколы HTTP, HTTPS, FTP, FTPS, SMTP и NNTP.

Являясь первым сервером Microsoft на языке сценариев для динамических веб-страниц, классический ASP (.asp) может работать только на платформе Microsoft, поскольку используются два языка: VBScript и JScript. В то время Microsoft не предоставляла встроенную поддержку других языков программирования.

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

.NET Framework

Microsoft .NET Framework[i] является средой для разработчиков для создания динамических веб-сайтов, веб-приложений и веб-сервисов.

Это программная среда (среда), которая предоставляет большую библиотеку классов (Библиотека классов классов — FCL) и поддерживает несколько языков, позволяющих системе обрабатывать код, написанный на других языках.

.NET-программы выполняются в Common Language Runtime (CLR) среды, поэтому, по существу, FCL и CLR составляют .NET Framework.

В течение последних 15 лет .NET выпустила накопительные обновления и подкомпоненты, обеспечив стабильную и широко внедренную веб-платформу, которая больше не является эксклюзивным для среды Microsoft.

Хотя выпуски ASP.NET тесно параллельны выпускам IIS, их можно разрабатывать на других платформах, таких как Spring.NET (framework для Java).

Перенос из ASP в ASPX

С .aspx замена .aspразработчикам рекомендуется сосредоточиться на разработке приложений с помощью графической модели, управляемой событиями, вместо веб-скриптов с использованием ASP (и PHP). PHP по-прежнему активно развивается в отличие от ASP, который просто заменяется ASP.NET.

Существует обширный список улучшений, которые могли бы мотивировать решение о миграции, с очень небольшим количеством причин, чтобы не смотреть на некоторые из мотивов:

Основные различия между IIS и ASP.NET Development Server (C#) Core Differences Between IIS and the ASP.NET Development Server (C#)

При тестировании приложения ASP.NET локально, скорее всего, вы используете веб-сервера разработки ASP.NET. When testing an ASP.NET application locally, chances are you are using the ASP.NET Development Web Server. Рабочий веб-сайт то, скорее всего, на базе IIS. However, the production website is most likely powered IIS. Существуют некоторые различия между как обрабатывать запросы в этих веб-серверов, и эти различия может иметь важные последствия. There are some differences between how these web servers handle requests, and these differences can have important consequences. В этом руководстве рассматриваются некоторые отличия, более связан с темой. This tutorial explores some of the more germane differences.

Вступление Introduction

Каждый раз, когда пользователь посещает приложения ASP.NET свой браузер отправляет запрос на веб-сайт. Whenever a user visits an ASP.NET application his browser sends a request to the website. Этот запрос передается по веб-сервера, который координирует со средой выполнения ASP.NET для создания и получения содержимого для запрошенного ресурса. That request is picked up by the web server software, which coordinates with the ASP.NET runtime to generate and return the content for the requested resource. я иться я nformation S служб (IIS) представляют собой пакет служб, которые предоставляют общие функции Интернет клиентов для Серверы Windows. TheI nternet I nformation S ervices (IIS) are a suite of services that provide common Internet-based functionality for Windows servers. IIS является наиболее часто используемые веб-сервера для приложений ASP.NET в рабочих средах; Это скорее по веб-сервера, не могут использоваться в поставщике веб-размещения для работы с вашим приложением ASP.NET. IIS is the most commonly used web server for ASP.NET applications in production environments; it’s most likely the web server software being used by your web host provider to serve your ASP.NET application. IIS также может использоваться как по веб-сервера в среде разработки, несмотря на то, что это приводит к установке служб IIS и настроить его должным образом. IIS can also be used as the web server software in the development environment, although this entails installing IIS and properly configuring it.

Илон Маск рекомендует:  Что такое код imap_get_quota

ASP.NET Development Server может использоваться альтернативные web server для среды разработки; Он поставляется с и интегрированные в Visual Studio. The ASP.NET Development Server is an alternative web server option for the development environment; it ships with and is integrated into Visual Studio. Если веб-приложения был настроен на использование IIS, ASP.NET Development Server будет автоматически запущен и использован веб-сервер при первом посещении веб-страницы в Visual Studio. Unless the web application has been configured to use IIS, the ASP.NET Development Server is automatically started and used as the web server the first time you visit a web page from within Visual Studio. Демонстрация веб-приложений, мы создали в определить, какие файлы должны быть развернуты руководства были обоих приложений системы веб-файл, которые не были настроены на использование IIS. The demo web applications we created back in the Determining What Files Need to Be Deployed tutorial were both file system-based web applications that were not configured to use IIS. Таким образом при просмотре любой из этих веб-сайтов в Visual Studio используется сервер разработки ASP.NET. Therefore, when visiting either of these websites from within Visual Studio the ASP.NET Development Server is used.

В идеальном мире разработки и рабочей среде будут одинаковыми. In a perfect world the development and production environments would be identical. Тем не менее мы уже говорили в предыдущем учебном курсе не нередко среды, чтобы определить различные настройки конфигурации. However, as we discussed in the preceding tutorial it is not uncommon for the environments to have differing configuration settings. С помощью по другой веб-сервера в средах добавляет другой переменной, которое необходимо принимать во внимание при развертывании приложения. Using different web server software in the environments adds another variable that must be taken into consideration when deploying an application. В этом руководстве рассматриваются основные различия между IIS и ASP.NET Development Server. This tutorial covers the key differences between IIS and the ASP.NET Development Server. Из-за этих различий существуют сценарии, где код, который безошибочно выполняется в среде разработки, вызывает исключение или ведет себя по-разному, при выполнении в рабочей среде. Because of these differences there are scenarios where code that runs flawlessly in the development environment throws an exception or behaves differently when executed in production.

Различия в контексте безопасности Security Context Differences

Каждый раз, когда по веб-сервера обрабатывает входящий запрос, он связывает этот запрос с конкретный контекст защиты. Whenever the web server software handles an incoming request it associates that request with a particular security context. Эти сведения о контексте безопасности используется операционной системой, чтобы определить, какие действия допустимы в запросе. This security context information is used by the operating system to determine what actions are permissible by the request. Например страница ASP.NET может включать код, который записывает сообщение в файл на диске. For example, an ASP.NET page might include code that logs some message to a file on disk. Для этой страницы ASP.NET для выполнения без ошибок, контекст безопасности должен иметь соответствующий файл прав системного уровня, а именно запись разрешения для этого файла. In order for this ASP.NET page to execute without error, the security context must have the appropriate file system-level permissions, namely write permissions on that file.

ASP.NET Development Server связывает входящие запросы в контексте безопасности пользователя, выполнившего вход. The ASP.NET Development Server associates incoming requests with the security context of the currently logged on user. Если вы вошли рабочем столе с правами администратора, страницах ASP.NET, обслуживаемых ASP.NET Development Server будет иметь те же права доступа с правами администратора. If you are logged on to your desktop as an administrator, then the ASP.NET pages served by the ASP.NET Development Server will have the same access rights as an administrator. Тем не менее ASP.NET запросов, обрабатываемых IIS связаны с учетной записью конкретной машины. However, ASP.NET requests handled by IIS are associated with a specific machine account. По умолчанию учетной записи сетевой службы компьютера используется службами IIS версии 6 и 7, несмотря на то, что на поставщике веб-размещения может настроили уникальную учетную запись для каждого клиента. By default, the Network Service machine account is used by IIS versions 6 and 7, although your web host provider may have configured a unique account for each customer. Более того в поставщике веб-размещения, скорее всего предоставил ограниченных разрешений для учетной записи компьютера. What’s more, your web host provider has likely given limited permissions to this machine account. Конечным результатом является то, возможно, требуется веб-страниц, которые выполняются без ошибки в среде разработки, но создают исключения, относящиеся к авторизации при размещении в рабочей среде. The net result is that you may have web pages that execute without error in the development environment, but generate authorization-related exceptions when hosted in the production environment.

Для отображения этого типа ошибки в действии, я создал страницу на веб-сайте рецензий на книги, которое создает файл на диске, в которой хранятся самые последние дата и время кто-то просматривать обучение самостоятельно ASP.NET 3.5 за 24 часа просмотрите. To show this type of error in action I’ve created a page in the Book Reviews website that creates a file on disk that stores the most recent date and time someone viewed the Teach Yourself ASP.NET 3.5 in 24 Hours review. Для выполнения этой процедуры откройте

/Tech/TYASP35.aspx странице и добавьте следующий код, чтобы Page_Load обработчик событий: To follow along, open the

/Tech/TYASP35.aspx page and add the following code to the Page_Load event handler:

File.WriteAllText Метод создает новый файл, если он не существует и записывает указанного содержимого. The File.WriteAllText method creates a new file if it does not exist and then writes the specified contents to it. Если файл уже существует, существующее содержимое перезаписывается. If the file already exists, it’s existing content is overwritten.

Затем посетите обучение самостоятельно ASP.NET 3.5 за 24 часа страница «Просмотр книги» в среде разработки с использованием сервера разработки ASP.NET. Next, visit the Teach Yourself ASP.NET 3.5 in 24 Hours book review page in the development environment using the ASP.NET Development Server. Предположим, что вы вошли в систему с учетной записью, которая имеет достаточные разрешения для создания и изменения в текстовый файл в Интернете корневого каталога приложения рецензии на книгу отображается теми же самыми, но каждый раз, когда страница посещен даты и времени пользователя IP-адрес хранится в LastTYASP35Access.txt файл. Assuming that you are logged on to your computer with an account that has adequate permissions to create and modify a text file in the web application’s root directory the book review appears the same as before, but each time the page is visited the date and time and user’s IP address is stored in the LastTYASP35Access.txt file. Перейдите в браузере к этому файлу; Вы увидите сообщение, подобное показанному на рис. 1. Point your browser to this file; you should see a message similar to the one shown in Figure 1.

Рис. 1: Текстовый файл содержит последнюю дату и время, был посещен рецензии на книгу (Просмотр полноразмерного изображения) Figure 1: The Text File Contains the Last Date and Time the Book Review was Visited (Click to view full-size image)


Развертывание веб-приложения в рабочую среду и затем посетите размещаемый обучение самостоятельно ASP.NET 3.5 за 24 часа страница «Просмотр» для книги. Deploy the web application to production and then visit the hosted Teach Yourself ASP.NET 3.5 in 24 Hours book review page. На этом этапе вы должны либо см. в разделе на странице проверки нормального распределения или сообщение об ошибке, которое показано на рис. 2. At this point you should either see the book review page as normal or the error message shown in Figure 2. Некоторые веб-узла поставщиками предоставить разрешения на запись для анонимных ASP.NET учетной записи компьютера, в котором регистр страницы будет работать без ошибок. Some web host providers grant write permissions to the anonymous ASP.NET machine account, in which case the page will work without error. Если, однако на поставщике веб-размещения запрещен доступ для записи для анонимной учетной записью исключение UnauthorizedAccessException исключение происходит при попытке TYASP35.aspx страницы, пытается выполнить запись текущей даты и времени в LastTYASP35Access.txt файл. If, however, your web host provider prohibits write access for the anonymous account then an UnauthorizedAccessException exception is raised when the TYASP35.aspx page attempts to write the current date and time to the LastTYASP35Access.txt file.

Рис. 2: По умолчанию машины учетная запись, используемая с IIS Does не имеют разрешения на запись в файловую систему (Просмотр полноразмерного изображения) Figure 2: The Default Machine Account Used by IIS Does Not Have Permissions to Write to the File System (Click to view full-size image)

Хорошо то, что большинство поставщиков веб-узла имеют какую-либо средство разрешения, которое позволяет задавать разрешения файловой системы веб-сайта. The good news is that most web host providers have some sort of permissions tool that allows you to specify file system permissions in your website. Предоставить анонимный доступ записи для учетной записи ASP.NET в корневой каталог и затем возвращаются к странице «Просмотр» книги. Grant the anonymous ASP.NET account write access to the root directory and then revisit the book review page. (При необходимости обратитесь к поставщику веб узла для получения помощи по предоставлению разрешения на запись для учетной записи ASP.NET по умолчанию.) Это время, страница должна загружаться без ошибок и LastTYASP35Access.txt файл должен быть создан успешно. (If needed, contact your web host provider for assistance on how to grant write permissions to the default ASP.NET account.) This time the page should load without error and the LastTYASP35Access.txt file should be created successfully.

Взять сейчас здесь заключается в ASP.NET Development Server работает в контексте безопасности, отличным от IIS, возможно, что страницы ASP.NET, чтение или запись в файловой системе, считываться или записи в журнал событий Windows, или чтения или записи Windows реестра будет работать ожидаемым образом для разработки, но создают исключения, если в рабочей среде. The take away here is that because the ASP.NET Development Server operates under a different security context than IIS, it is possible that your ASP.NET pages that read or write to the file system, read from or write to the Windows Event Log, or read or write to the Windows registry will work as expected on development but generate exceptions when on production. После создания веб-приложения, которое будет развертываться общих веб-размещения среды, не чтения или записи в журнале событий и реестр Windows. When building a web application that will be deployed to a shared web hosting environment, do not read or write to the Event Log or the Windows registry. Также запишите любая страница ASP.NET считывать или записывать в файловой системе, как вам может понадобиться предоставляют права чтения и записи в соответствующие папки в рабочей среде. Also take note of any ASP.NET pages that read from or write to the file system as you may need to grant read and write privileges on the appropriate folders in the production environment.

Различия на обслуживание статического содержимого Differences On Serving Static Content

Другой основное различие между службами IIS и ASP.NET Development Server является, как их обрабатывать запросы для статического содержимого. Another core difference between IIS and the ASP.NET Development Server is how they handle requests for static content. Каждый запрос, поступающие в ASP.NET Development Server, для страницы ASP.NET, изображения или файла JavaScript, обрабатывается средой выполнения ASP.NET. Every request that comes into the ASP.NET Development Server, whether for an ASP.NET page, an image, or a JavaScript file, is processed by the ASP.NET runtime. По умолчанию IIS вызывает только среда выполнения ASP.NET при поступлении запроса для ресурса ASP.NET, например веб-страницу ASP.NET, веб-службы и т. д. By default, IIS only invokes the ASP.NET runtime when a request comes in for an ASP.NET resource, such as an ASP.NET web page, a Web Service, and so forth. Запросы для статического содержимого — образы, файлы CSS, файлы JavaScript, PDF-файлов, ZIP-файлы и т — извлекаются путем служб IIS без участия среды выполнения ASP.NET. Requests for static content — images, CSS files, JavaScript files, PDF files, ZIP files, and the like — are retrieved by IIS without the involvement of the ASP.NET runtime. (Его можно выполнить настройку IIS для работы со средой выполнения ASP.NET, когда обслуживает статическое содержимое; в этом руководстве, Дополнительные сведения см. в разделе «Проверка подлинности на основе форм выполнение и URL-адрес проверки подлинности на статические файлы с IIS 7»). (It is possible to instruct IIS to work with the ASP.NET runtime when serving static content; consult the «Performing Forms-Based Authentication and URL Authentication on Static Files with IIS 7» section in this tutorial for more information.)

Среда выполнения ASP.NET выполняет ряд действий для создания запрошенного содержимого, включая (определяющий запрашивающей стороне) проверки подлинности и авторизации (определения запрашивающей стороне имеет разрешение на просмотр запрошенного содержимого). The ASP.NET runtime performs a number of steps to generate the requested content, including authentication (identifying the requestor) and authorization (determining if the requestor has permission to view the requested content). Популярные форма проверки подлинности — проверки подлинности на основе форм, в которой для идентификации пользователя, введя свои учетные данные, — как правило, имя пользователя и пароль — в текстовые поля на веб-странице. A popular form of authentication is forms-based authentication, in which a user is identified by entering their credentials — usually a username and password — into textboxes on a web page. После проверки учетных данных, веб-сайт сохраняет билет проверки подлинности файл cookie в браузере пользователя, который отправляется с каждый последующий запрос на веб-сайт и используется для проверки подлинности пользователя. Upon validating their credentials, the website stores an authentication ticket cookie on the user’s browser, which is sent with every subsequent request to the website and is what is used to authenticate the user. Кроме того, можно указать Авторизация URL-адреса правилам, какие пользователи могут или не может получить доступ к определенной папке. Moreover, it is possible to specify URL authorization rules that dictate what users can or cannot access a particular folder. Многие веб-сайтов ASP.NET использовать форм проверки подлинности и авторизация URL-адреса для поддержки учетных записей пользователей и для определения части сайта, которые доступны только для прошедших проверку подлинности пользователей и пользователей, принадлежащих к определенной ролью. Many ASP.NET websites use forms-based authentication and URL authorization to support user accounts and to define portions of the site that are only accessible to authenticated users or users that belong to a certain role.

Для провести полную ревизию ASP. NET на основе форм проверки подлинности, авторизация URL-адреса и возможностях связанные с учетной записью пользователя, обязательно ознакомьтесь с моей учебники по безопасности веб-сайт. For a thorough examination of ASP.NET’s forms-based authentication, URL authorization, and other user account-related features, be sure to check out my Website Security Tutorials.

Рассмотрим веб-сайт, который поддерживает учетные записи пользователей с помощью авторизации на основе форм и есть папка, использование авторизации URL-адрес, настроенный для прошедшего проверку подлинности только пользователи. Consider a website that supports user accounts using forms-based authorization and has a folder that, using URL authorization, is configured to only allow authenticated users. Предположим, что эта папка содержит страниц ASP.NET, и эти файлы PDF-ФАЙЛ можно просмотреть PDF-файлов и что цель состоит в том, что только прошедшие проверку пользователи. Imagine that this folder contains ASP.NET pages and PDF files and that the intent is that only authenticated users can view these PDF files.

Что произойдет, если посетитель пытается просмотреть один из этих файлов PDF, введя URL-адрес непосредственно в адресной строке браузера его? What happens if a visitor attempts to view one of these PDF files by entering the URL directly in his browser’s Address bar? Чтобы узнать, давайте создайте новую папку в узле рецензий на книги, некоторые файлы PDF и настроить сайт для использования авторизации URL-адреса, чтобы запретить анонимным пользователям посещения этой папки. To find out, let’s create a new folder in the Book Reviews site, add some PDF files, and configure the site to use URL authorization to prohibit anonymous users from visiting this folder. Если скачивание демонстрационной версии приложения вы увидите, что я создал папку с именем PrivateDocs и добавляется в PDF-ФАЙЛ из моей учебники по безопасности веб-сайт (как подгонки!). If you download the demo application you’ll see that I created a folder called PrivateDocs and added a PDF from my Website Security Tutorials (how fitting!). PrivateDocs Папка также содержит Web.config файла, который определяет правила авторизации URL-адрес, чтобы запретить анонимные пользователи: The PrivateDocs folder also contains a Web.config file that specifies the URL authorization rules to deny anonymous users:

Наконец, я настроил веб-приложение для использования проверки подлинности на основе форм, обновив Web.config файл в корневом каталоге, заменив: Finally, I configured the web application to use forms-based authentication by updating the Web.config file in the root directory, replacing:

С помощью сервера разработки ASP.NET, посетите сайт и получите шанс прямой URL-адрес одного из файлов PDF в адресной строке браузера. Using the ASP.NET Development Server, visit the site and enter the direct URL to one of the PDF files in your browser’s Address bar. Если вы загрузили веб-сайт, связанный с этим руководством, URL-адрес должен выглядеть примерно так: http://localhost:portNumber/PrivateDocs/aspnet_tutorial01_Basics_vb.pdf If you downloaded the website associated with this tutorial the URL should look something like: http://localhost:portNumber/PrivateDocs/aspnet_tutorial01_Basics_vb.pdf

Введите этот URL-адрес в адресную строку браузер для отправки запроса на сервер разработки ASP.NET для файла. Entering this URL into the Address bar causes the browser to send a request to the ASP.NET Development Server for the file. Сервер ASP.NET Development Server передает запрос в среду выполнения ASP.NET для обработки. The ASP.NET Development Server hands off the request to the ASP.NET runtime for processing. Так как мы еще не выполнили вход, а Web.config в PrivateDocs папка настроена для анонимного доступа, среда выполнения ASP.NET автоматически перенаправит нам на страницу входа, Login.aspx (см. рис. 3). Because we have not yet logged in, and because the Web.config in the PrivateDocs folder is configured to deny anonymous access, the ASP.NET runtime automatically redirects us to the login page, Login.aspx (see Figure 3). При перенаправлении пользователя на страницу входа, ASP.NET включает в себя ReturnUrl параметр строки запроса, который показывает страницу, пользователь при попытке просмотра. When redirecting the user to the log in page, ASP.NET includes a ReturnUrl querystring parameter that indicates the page the user was attempting to view. После успешного входа пользователя могут возвращаться на эту страницу. After successfully logging in the user can be returned to this page.

Рис. 3: У пользователей, автоматически перенаправляется на страницу входа (Просмотр полноразмерного изображения) Figure 3: Unauthorized Users are Automatically Redirected to the Login Page (Click to view full-size image)

Теперь давайте посмотрим, как это ведет себя в рабочей среде. Now let’s see how this behaves on production. Развернуть приложение и введите прямой URL-адрес к одному из файлов PDF из PrivateDocs папку в рабочей среде. Deploy your application and enter the direct URL to one of the PDFs in the PrivateDocs folder in production. Вам предложат указать браузер для отправки запроса IIS для файла. This prompts your browser to send a request IIS for the file. Так как запрашивается статического файла, IIS извлекает и возвращает файл без вызова среды выполнения ASP.NET. Because a static file is requested, IIS retrieves and returns the file without invoking the ASP.NET runtime. В результате было выполнено; проверка авторизации не URL-адрес содержимое мы предполагаем, что закрытый PDF-ФАЙЛ доступны любой пользователь, знающий прямой URL-адрес к файлу. As a result, there was no URL authorization check performed; the contents of the supposedly private PDF are accessible to anyone who knows the direct URL to the file.

Рис. 4: Анонимные пользователи могут загрузить закрытый PDF файлы, введя прямой URL-адрес к файлу (Просмотр полноразмерного изображения) Figure 4: Anonymous Users Can Download the Private PDF Files By Entering the Direct URL to the File (Click to view full-size image)

Выполнение проверки подлинности на основе форм и проверки подлинности URL-адрес на статические файлы с IIS 7 Performing Forms-Based Authentication and URL Authentication on Static Files with IIS 7

Существует несколько методов, которые можно использовать для защиты от несанкционированного доступа из статического содержимого. There are a couple of techniques you can use to protect static content from unauthorized users. IIS 7 появился интегрированного конвейера, который семейный рабочего процесса в IIS с помощью рабочего процесса среда выполнения ASP.NET. IIS 7 introduced the integrated pipeline, which marries IIS’s workflow with the ASP.NET runtime’s workflow. По сути вы можете настроить IIS для вызова среды выполнения ASP.NET проверки подлинности и авторизации модулей все входящие запросы (включая статического содержимого, например PDF-файлов). In a nutshell, you can instruct IIS to invoke the ASP.NET runtime’s authentication and authorization modules all incoming requests (including static content like PDF files). Обратитесь в службу на поставщике веб-размещения, чтобы узнать, как настроить веб-сайт для использования интегрированного конвейера. Contact your web host provider to find out how to configure your website to use the integrated pipeline.

После настройки IIS для использования интегрированного конвейера добавьте следующую разметку для Web.config файл в корневом каталоге: Once IIS has been configured to use the integrated pipeline add the following markup to the Web.config file in the root directory:

Эта разметка указывает, что IIS 7 для использования на базе ASP.NET модулей проверки подлинности и авторизации. This markup instructs IIS 7 to use the ASP.NET-based authentication and authorization modules. Повторное развертывание приложения и повторно откройте PDF-файл. Re-deploy your application and then re-visit the PDF file. Настоящее время, когда запрос обрабатывается IIS она предоставляет логику проверки подлинности и авторизации среды выполнения ASP.NET возможность проверить запрос. This time when IIS handles the request it gives the ASP.NET runtime’s authentication and authorization logic an opportunity to inspect the request. Так как только прошедшие проверку подлинности пользователи имеют право просмотра содержимого PrivateDocs папки, анонимный пользователь автоматически перенаправляется на страницу входа (см. рис. 3). Because only authenticated users are authorized to view the contents in the PrivateDocs folder, the anonymous visitor is automatically redirected to the login page (refer back to Figure 3).

Если в поставщике веб-размещения по-прежнему используется IIS 6 нельзя использовать функцию интегрированного конвейера. If your web host provider is still using IIS 6 then you cannot use the integrated pipeline feature. Является размещение частных документов в папке, которая запрещает доступ по протоколу HTTP (например, App_Data ) и затем создать страницу для обслуживания этих документов. One workaround is to put your private documents in a folder that prohibits HTTP access (such as App_Data ) and then create a page to serve these documents. Эта страница может называться GetPDF.aspx и передается имя PDF-ФАЙЛ в качестве параметра строки запроса. This page might be called GetPDF.aspx , and is passed the name of the PDF through a querystring parameter. GetPDF.aspx Страницы бы сначала убедитесь, что пользователь имеет разрешение на просмотр файла и, если в этом случае следует использовать Response.WriteFile(filePath) метод для отправки содержимого PDF-файла клиента, отправившего запрос. The GetPDF.aspx page would first verify that the user has permission to view the file and, if so, would use the Response.WriteFile(filePath) method to send the contents of the requested PDF file back to the requesting client. Этот способ также будет работать для IIS 7, если вы не хотите включить интегрированного конвейера. This technique would also work for IIS 7 if you did not wish to enable the integrated pipeline.

Сводка Summary

Веб-приложений в рабочей среде размещаются с помощью по Microsoft IIS для веб-сервера. Web applications in a production environment are hosted using Microsoft’s IIS web server software. В среде разработки Однако приложение может размещаться с помощью IIS или ASP.NET Development Server. In the development environment, however, the application may be hosted using IIS or the ASP.NET Development Server. В идеальном случае же по веб-сервера следует использовать в обеих средах, так как с помощью различных программных добавляет другой переменной в наборе. Ideally, the same web server software should be used in both environments because using different software adds another variable in the mix. Тем не менее простота использования сервера разработки ASP.NET упрощает привлекательным вариантом в среде разработки. However, the ease of use of the ASP.NET Development Server makes it an attractive choice in the development environment. Хорошо то, что существует только некоторые основные различия между IIS и ASP.NET Development Server, и при осведомленность об этих различиях вы можно предпринять действия, которые помогут убедиться, что приложение работает и работает так же, как независимо от того, Среда. The good news is that there are only a few fundamental differences between IIS and the ASP.NET Development Server, and if you are aware of these differences you can take steps to help ensure that the application works and functions the same way regardless of the environment.

Счастливого вам программирования! Happy Programming!

Дополнительные сведения Further Reading

Дополнительные сведения по темам, обсуждавшимся в этом руководстве см. в следующих ресурсах: For more information on the topics discussed in this tutorial, refer to the following resources:

Лекция 1. Что такое ASP.NET. Инсталляция и тестовый проект.

Введение

Microsoft .NET Framework — это платформа для создания, развертывания и запуска Web-сервисов и приложений. Она предоставляет высокопроизводительную, основанную на стандартах, многоязыковую среду, которая позволяет интегрировать существующие приложения с приложениями и сервисами следующего поколения, а также решать задачи развертывания и использования интернет-приложений. .NET Framework состоит из трех основных частей — общеязыковой среды выполнения (common language runtime), иерархического множества унифицированных библиотек классов и компонентной версии ASP, называемую ASP.NET.

ASP.NET – это часть технологии .NET, используемая для написания мощных клиент-серверных интернет приложений. Она позволяет создавать динамические страницы HTML. ASP.NET возникла в результате объединения более старой технологии ASP (активные серверные страницы) и .NET Framework. Она содержит множество готовых элементов управления, используя которые можно быстро создавать интерактивные web-сайты. Вы также можете использовать сервисы, предоставляемые другими сайтами, прозрачно для пользователей вашего сайта. В общем, возможности ASP.NET ограничены только вашим воображением.

Давайте обсудим, что такое динамические страницы HTML и чем они отличаются от статических. Статическая страница содержит код на языке гипертекстовой разметки HTML. Когда автор страницы пишет ее, он определяет, как будет выглядеть страница для всех пользователей страницы. Содержание страницы будет всегда одинаковым независимо от того, кто и когда решит ее просмотреть. Языка HTML вполне достаточно для отображения информации, которая редко изменяется и не зависит от того, кто ее просматривает. Страница HTML — простой ASCII-текст, следовательно, клиент может работать в любой операционной системе.

Совершенно понятно, что если сформировать web-страницу, описав ее структуру средствами HTML, она будет совершенно статична в смысле содержимого. То есть при просмотре в браузере она будет нести в себе точно ту же информацию, что была в нее записана в момент создания, и переданные пользователем данные не могут быть использованы для модификации содержимого отображаемых ему страниц: он сможет увидеть только то, что предварительно было записано в конечный набор файлов.

Но что, если мы хотим отобразить на странице текущий курс евро или прогноз погоды? Если мы написали страницу HTML вчера, сегодня она уже устареет. Следовательно, мы должны уметь создавать динамические страницы. Динамическое наполнение страницы – это информация, содержание которой определяется тем, кому она предназначена, и которая отличается от просмотра к просмотру. Оно позволяет обеспечить двусторонний обмен информацией – от клиента к серверу и обратно.

Динамическими принято называть web-страницы, которые перед отправкой клиенту проходят цикл обработки на сервере. В самом простом случае это может быть некоторая программа, которая модифицирует запрашиваемые клиентом статические страницы, используя параметры полученного запроса и некоторое хранилище данных. Даже при такой примитивной организации «неразрешимая» задача из предыдущего абзаца обретает очевидное решение: достаточно подготовить всего одну статическую страницу – шаблон – и перед отправкой страницы программно подставлять в него значение, полученное сегодня из банка или метеобюро.

Илон Маск рекомендует:  Олимпиады по информатике

Большинство страниц на ранних стадиях развития интернета были статическими. Последние 10 лет растет количество динамических страниц. И это понятно, пользователи интернет хотят не только читать готовую информацию, а быть активными действующими лицами. Например, они заказывают товары в интернет-магазине, пишут дневники, участвуют в конкурсах. Информационные порталы обновляют новости каждую минуту. Динамические страницы могут подстраиваться под конкретного пользователя, а также реагировать на его действия в браузере. Каким же образом? Для этого придумано множество технологий. Например, того, чтобы идентифицировать пользователя и сохранить его настройки для данного сайта, применяются файлы-cookies.

Существуют языки, способные динамически изменять содержимое веб-страницы. С одной стороны, это языки скриптов, выполняющиеся непосредственно у клиента. Примеры скриптовых языков — JavaScript и VBScript. Скрипты на этих языках встроены в код HTML, который сервер посылает браузеру. Сценарии, выполняемые на стороне клиента, выделяются тегами и . Браузер интерпретирует этот код и показывает пользователю результат. Сам код можно просмотреть через View Source браузера. Естественно, эти программы не могут быть большими. Например, если нужно выполнить поиск в базе данных, мы не может отправить пользователю все ее содержимое. Но скрипты могут проверить правильность запроса, введенного в форму, тогда не придется перезагружать сервер обработкой неправильных запросов. Некоторые программисты создают на JavaScript анимационные эффекты. Одна студентка intuit.ru желала найти скрипт, который бы отправлял SMS-сообщения. Увы, это невозможно. Выполняемых на стороне клиента сценариев недостаточно для создания полноценных динамических страниц. Даже если на странице используется JavaScript, анимированные картинки .gif, она называется статической.

Динамическая веб-странице должна быть создана «на лету» программой, исполняющейся на интернет-сервере. Широко применяются механизм шлюзов CGI(Common Gateway Interface). Вначале пользователь получает статическую страницу с формой. Вам известно, что в теге FORM существует атрибут ACTION. Именно он задает адрес (URL) исполняемого приложения. На сервере находятся исполняемые файлы программ, написанных, например на C/С++ или Дельфи, которые по протоколу HTTP принимают данные из входного потока или из переменных окружения и записывают в стандартный выходной поток готовую страницу.

Пользователю в ответ на запрос посылается HTML код, который был специально сгенерирован для него. Это может быть, например, результат поиска в поисковой системе. CGI -скрипты могут быть написаны на интерпретируемом языке (Perl) или даже скрипте командной строки. Входной и выходной потоки переназначаются. На вход интернет-сервер принимает данные, введенные пользователем. После обработки полученных данных, пользователю возвращается результирующая страница. При исполнении cgi-программа загружается в память сервера, а при завершении – удаляется. Когда 100 клиентов одновременно обращаются к серверу, в памяти создаются 100 процессов, для размещения кода каждого из которых нужна память. Это отрицательно сказывается на масштабируемости. Напомним, что масштабируемость — это возможность плавного роста времени ответа программной системы на запрос с ростом числа одновременно работающих пользователей.

Для решения это проблемы Microsoft была предложена альтернатива – ISAPI(Internet Server Application Programming Interface)-расширения и фильтры. Вместо исполняемых файлов используются DLL – библиотеки. Код DLL находится в памяти все время и для каждого запроса создает не процессы, а нити исполнения. Все нити используют один и тот же программный код. ISAPI –приложение выполняется в процессе IIS-сервера. Это позволяет повысить производительность и масштабируемость.

ISAPI-расширения можно создавать в Visual Studio C++ 6.0, пользуясь мастером.

У ISAPI тоже есть недостатки, относящиеся к разработке. Если мы меняем исходный код dll, мы должны его откомпилировать и поместить в исполняемую директорию сервера. Но так как предыдущий вариант dll находится в памяти, необходимо остановить сервер, чтобы получить доступ на изменение файла. В это время клиенты не смогут получить в сервера ни один документ, и, конечно, будут не удовлетворены.

Скриптовые языки, исполняющиеся на стороне сервера – php и asp. Технология asp была разработана Microsoft в 90-х годах.

Выполнение кода asp поддерживается ISAPI-расширением сервера. В диалоге конфигурации сервера IIS определяются способы обработки файлов с различными расширениями. Для обработки URL-адреса с расширением в установках сервера определен файл asp.dll. Файлы asp отправляются к нему на обработку. На вход поступает asp, а на выходе имеем поток HTML-кода.

Пример файла asp:

Тег сигнализирует asp, что в нем находится код, который он должен обрабатывать на сервере. Выполняется скрипт на языке, который указан в директиве Language. Оператор Response.Write записывает текст в выходной поток сервера, таким образом, он становится частью HTML-страницы, отправленной пользователю.

Технология asp была ограничена по своим возможностям. Он использовал скриптовые языки, которые имеют меньше возможностей, чем полнофункциональные языки программирования. Код asp был встроен в HTML в виде специальных тегов, что создавало путаницу. Кусочки asp были разбросаны по нему, как изюм в булке. Но HTML код обычно создают дизайнеры, которые умеют «делать красиво», а asp – программисты, которые заставляют все это работать. В ASP.NET вы можете держать код asp и HTML в разных файлах.

Скриптовые языки не поддерживают строгую типизацию. Что это значит? Вы можете не описывать переменную до ее использования и можете присваивать ей значения разных типов. Это удобно, но создает почву для ошибок. Например, у вас есть переменная x1, и вы присваиваете ей значение 1, но вы сделали опечатку и по ошибке написали x2=1. Будет создана новая переменная x2, а значение x1 не изменится. В языке со строгой типизацией компилятор заметит, что переменная x2 не описывалась, и выдаст ошибку.

В 2000 году на конференции разработчиков в качестве части новой технологии .NET Microsoft представила ASP+. С выходом .NET Framework 1.0 она стала называться ASP.NET.

ASP.NET — это не продолжение ASP. Это концептуально новая технология Microsoft, созданная в рамках идеологии .NET. В ASP.NET заложено все, для того, чтобы сделать весь цикл разработки веб-приложения более быстрым, а поддержку более простой. ASP.NET основана на объектно-ориентированной технологии, но сохранила модель разработки asp: вы создаете программу и помещаете ее в директорию, выделенную сервером, и она будет работать. В ASP.NET появилось много новых функций, а существовавшие в asp значительно усовершенствованы.

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

Компиляция происходит на сервере в момент первого обращения пользователя к странице. Если программист изменил текст страницы, программа перекомпилируется автоматически. При написании кода можно использовать набор компонентов, поставляемых с .NET.

Платформа .NET Framework предоставляет приложениям среду выполнения, сама непосредственно взаимодействуя с операционной системой. Выше лежит интерфейс ASP.NET приложений, на котором в свою очередь базируются веб-формы (ASP.NET страницы) и веб-сервисы. Интерфейс .NET Framework позволяет стандартизировать обращение к системным вызовам и предоставляет среду для более быстрой и удобной разработки. CLR обеспечивает единый набор сервисов для всех языков.

ASP.NET использует технологию доступа к данным ADO.NET, которая обеспечивает единый интерфейс для доступа к базам данных SQL Server и файлам XML. Кроме того, усиленная модель безопасности позволяет обеспечивать защиту клиента и сервера от несанкционированного доступа.

В 2004 году появилась версия ASP.NET 2.0(бета-версия, окончательный выход – конец 2005-начало 2006). Как утверждается, эта версия позволяет сократить объем кодирования на 70%. Новые возможности версии 2.0 – например, использование шаблонов дизайна страниц(Master Page), упрощенная локализация Web-приложений, более 50 новых серверных элементов управления. Цели, которые преследовали разработчики новой версии – повысить скорость разработки сайтов, масштабируемость, легкость поддержки и администрирования сайтов, скорость работы сервера. Появилась панель остнастки MMC (консоль управления Microsoft), предоставляющая графический интерфейс для управления настройками ASP.NET. Изменять настройки проекта теперь можно и через web-интерфейс. ASP.NET 2.0 поддерживает работу на 64-битных процессорах. Сервис персонализации (personalization) предоставляет готовое решение для хранения персональных данных, непосредственно характеризующих пользователя сайта, так называемого профиля пользователя (Profile).

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

Предыдущие версии Visual Studio для проектов ASP.NET требовали наличия на машине разработчика сервера IIS. Теперь сервер встроен в среду разработки.

ASP.NET 2.0 и Visual Studio 2005 предоставляют инструменты для легкого построения локализируемых сайтов, которые определяют предпочитаемый язык пользователя и посылают ему страницы на его языке.

Возможность прекомпиляции позволяет обнаружить ошибки до загрузки страниц на сервер. Можно не хранить на сервере исходные страницы aspx, тем самым защищая свою интеллектуальную собственность.

В ASP.NET 2.0 встроена технология автоматического обновления кэширования баз данных. Данные, полученные из базы, хранятся на сервере и он не обращается к базе для обработки повторного запроса. При изменении базы данных кэш обновляет свое содержимое.

ASP.NET — это технология, а не язык, и позволяет программировать на разных языках – С#, Visual Basic, J#. В платформе .NET все языки равны, но некоторые равнее(Дж. Оруэлл). Вот таким языком и является С#, потому что он был специально создан для этой платформы. Программирование C# позволяет в полной мере использовать концепции, методы и паттерны объектно-ориентированной разработки. Язык Visual Basic 8.0 наделен почти теми же возможностями. Чтобы научиться ASP.NET, вам нужно знать основы HTML, а знание asp не обязательно. Оно может даже помешать, так как придется менять образ мышления. Также для понимания многих желательно знать CSS и JavaScript.

Процесс инсталляции

ASP .NET 2.0 можно установить на компьютерах с ОС Windows 2000 с Service Pack 4, Windows XP с Service Pack 2 и более поздними версиями Windows. Готовые сайты предпочтительно устанавливать на Windows Server 2003.

Для разработки приложения можно использовать любую среду разработки или даже текстовый редактор, при условии, что у вас есть доступ к IIS. Если же вы хотите воспользоваться всей мощью Microsoft .NET Framework и ASP.NET и при этом, затратить как можно меньше усилий, то нужно воспользоваться средой разработки, специально разработанной для программирования ASP.NET 2.0.

Если вы приобретете Visual Studio .NET 2005, то для работы достаточно будет только его. .NET Framework содержится на дисках. В его состав входит Visual Web Developer, который позволяет создавать профессиональные веб-приложения, а также desktop-приложения на разных языках программирования. Продукты Microsoft выпускаются на DVD, но есть набор из двух CD от «Мегасофт». Visual Studio .NET 2005 требует около 2 Гигабайт дискового пространства. При этом инсталлируется ASP.NET 2.0, среда разработки, SQL Server Express, встроенный веб-сервер, Crystal Reports со специальными элементами управления для ASP.NET 2.0.
Бесплатно распространяемое программное обеспечение.

Visual Web Developer 2005 Express Edition – свободно распространяемая среда предназначенный для новичков и студентов, доступная по адресу http://msdn.microsoft.com/vstudio/express/vwd/. Список отличий VWD от Visual Studio.NET 2005 невелик и для начинающих несущественен, он приведен здесь: http://msdn.microsoft.com/vstudio/products/compare/default.aspx

Инсталлятор VWD имеет объем 2,8 Мб, но в процессе инсталляции он загрузит еще 40 Мб и 80 Мб, если захотите установить документацию. При этом также будет установлен .NET Framework с ASP.NET 2.0.

Системные требования – процессор с минимальной скоростью 600 МГц, 128 МБ памяти и 1.3 ГБ дискового пространства. После инсталляции нужно будет зарегистрировать свою установку, это совершенно бесплатно.

В качестве среды разработки вы можете выбрать WebMatrix. Эта программа совмещает в себе редактор и http-сервер. Ее можно загрузить на http://www.asp.net/WebMatrix.

У WebMatrix инсталлятор размером всего 1.2 Мб, но у него меньше возможностей, чем у VWD. Но, в общем, эти среды разработки похожи. У WebMatrix есть неприятная особенность – она дает запрос на сохранение во время закрытия файлов, которые не редактировались. VWD Express позволяет одним нажатием кнопки открыть Web-интерфейс конфигурирования проекта. В VWD работает технология IntelliSense, которая автоматически предлагает возможные в данном месте элементы кода.

Если вы решили работать с WebMatrix, вы должны установить на своей машине .NET Framework 2.0 и ASP.NET 2.0.

Если у вас операционная система Windows Server 2003, то .NET Framework уже предустановлен. Вы можете проверить, есть ли вас директория %WINSDIR%Microsoft.NETFramework. Если нет, вы можете ее загрузить на сайте Microsoft. Последние версии находятся по адресу http://msdn.microsoft.com/netframework/downloads/updates

На данный момент это .NET Framework 2.0, но к моменту, когда вы будете читать эту лекцию, могут появиться более новые версии. Вы можете скачать новую версию, даже если у вас уже есть другая. Они будут существовать на компьютере одновременно в поддиректориях %WINSDIR%Microsoft.NETFramework, с именем, соответствующим номеру версии. Можно сказать, что каждая версия представляет собой сборку. Система версий поддерживается для всех приложений, созданных с использованием .NET Framework.

Там вы увидите ссылки на .NET Framework для разных архитектур компьютера.

При желании загрузите .NET Framework Version 2.0 SDK, которая содержит наряду с .NET Framework Version 2.0 SDK документацию и примеры, которые могут оказаться полезными.

По адресу http://asp.net/default.aspx можно найти много полезных для разработчиков программных продуктов, примеров кода и статей.

IIS(Internet Information Server) находится на инсталляционном диске Windows 2000/XP, но предустановлен только на серверах. Его можно установить, зайдя в Control Panel->Add or Remove Programs->Add/Remove Windows Components. Компьютер попросит вас вставить инсталляционный диск.

IIS может понадобиться, если вам нужен полноценный сервер для работы в интернет, а не просто на своем компьютере или в локальной сети или вы решили набирать текст в обычном редакторе. Для работы на своем компьютере во все эти среды разработки встроен сервер Cassini, который первоначально появился как часть WebMatrix. Символ WebMatrix – планета Сатурн, а Кассини — известный исследователь Сатурна. Предыдущие версии Visual Studio требовали наличия IIS, но теперь Cassini встроен и в Visual Studio 2005, что позволяет работать даже в Windows XP Home Edition.

Примеры будут даваться как для WebMatrix, так и Visual Studio. Некоторые примеры требуют VWD Express или Visual Studio.
Сообщества разработчиков.

Через меню помощи Visual Web Developer Express можно зайти на сайты форума по ASP.NET. А вот адреса сайтов на русском языке:

* http://www.aspnetmania.com
* http://www.gotdotnet.ru/
* http://www.sql.ru/
* http://dotsite.ru/
* http://www.rsdn.ru/

Вы можете завести пробный хостинг на http://europe.webmatrixhosting.net/russia/default.aspx.

Первый проект

Вначале решите, в какой директории будете создавать страницы. Все файлы, находящиеся в одной директории, считаются единым проектом.Запустите выбранную вами среду разработки. Выберите пункт меню File-New-Website. Появится диалоговое окно. Назначьте в нем имя проекта и выберите язык программирования С#.

По умолчанию проект создается в файловой системе. По желанию его можно создать на HTTP или FTP-сервере. Из файловой системы проект всегда можно скопировать на сервер нажатием одной кнопки в заголовке Solution Explorer.

В проекте будет создана страница default.aspx. Выберите ее, и появится окно редактирования с закладками Design и Source. Не меняя ничего, щелкните на кнопке со стрелкой, чтобы просмотреть страницу в браузере. Появится окно, котором спрашивается, нужно ли добавить в файл web.config возможность отладки. Нажмите OK. На панели задач должен появиться значок веб-сервера. Откроется браузер, показывающий страницу по адресу http://localhost:номерпорта/Website1/default.aspx. localhost обозначает сервер, работающий на вашем компьютере. Встроенный сервер Cassini сам назначает себе номер порта – для каждого проекта он разный. Сервер IIS обычно работает через порт 80(или 8080, если тот занят), и для него номер порта указывать не нужно. При этом ваша страница будет скомпилирована.

Пока что страница в бразере пустая.

Но исходный код этой страницы не пустой. Программа сгенерировала код для вас.

IIS 7.0: краткая инструкция для системного администратора. Часть 1 – пpoверка результатов установки.

Продолжаем говорить об процедуре установки веб сервера под управлением IIS 7.0 на Windows Server 2008, которая была рассмотрена в предыдущем посте.

Теперь перейдем к проверке результатов установки IIS 7.0. Самый простой вариант проверить, работает ли веб сервер, особенно – находясь за локальной консолью, это обратиться из любого веб-браузера по адресу http://localhost/. Далее, проверить с локальной и удаленной машины по IP-адресу.

При установке IIS 7.0 создается веб сайт по умолчанию, сконфигурированный на ответ при любом URL-запросе, поступившем на порт 80 любого сетевого интерфейса сервера, на котором установлен IIS 7.0. Т.е. запрос браузера типа http://localhost/ должен быть обработан как запрос к веб сайту по умолчанию. Содержимое сайта по умолчанию представляет собой 2 файла – iisstart.htm и welcome.png (который отображается в iisstart.htm), которые и будут открыты клиентом. Поэтому результат обращения к localhost будет иметь следующий вид:

Теперь, если все хорошо (если «плохо» – поиск неисправностей и ошибок мы рассмотрим позже, в отдельном разделе), убедимся, что все модули, которые должны быть установлены по умолчанию – подключены и работают, а базовая конфигурация – отвечает нашим требованиям.

1. Основным инструментом управления IIS 7.0 является консоль Internet Information Services (IIS) Manager, которая устанавливается по умолчанию, вместе с ролью Web Server в Windows Server 2008 (IIS Management Console, раздел Management Tools при установки модулей). После соответствующей установки консоль управления IIS 7.0 можно найти, как дочернюю запись внутри раздела Web Server (IIS) в разделе ролей Server Manager, либо как пункт в разделе Administrative Tools меню Start, либо выполнив команду inetmgr (в командной строке или через пункт Run того же меню Start).

2. При старте консоль Internet Information Services (IIS) Manager открывается с «домашней страницей», на которой в виде панелей находится информация о том, к каким веб серверам и веб сайтам подключался пользователь консоли до этого (если консоль только установлена вместе с ролью Web Server (IIS), то в консоле присутствует запись только о локальном веб сервере), также присутствуют ссылки для выбора подключения к другим серверам, веб сайтам, веб приложениям и папкам, а также ссылки на внешние ресурсы, посвященные IIS.

3. Кроме того, на домашней странице присутствует панель новостей, которые подгружаются как новостная RSS-лента с сайта www.iis.net, если администратор нажимает на ссылку Enable IIS News. Новости, кстати, очень полезные, рекомендуется включать и использовать эту информацию в повседневной работе.

4. При подключении к какому либо веб серверу IIS 7.0 консоль Internet Information Services (IIS) Manager представляет его конфигурацию, как логическую структуру – уровень самого веб сервера, чьи настройки являются глобальными и распространяются по умолчанию на все веб сайты, пулы приложений и, сообственно, веб сайты со своими настройками. Эта конфигурационная иерархия, в виде разворачивающегося дерева, начинающегося с узла с именем (или IP) веб сервера, отображается в левой панели консоли Internet Information Services (IIS) Manager.

5. Если выбрать какой-то узел в дереве конфигурации, то в центральной панель консоли Internet Information Services (IIS) Manager будут отображены в виде отдельных иконок все параметры (а также – модули или списки), соответствующие конфигурации выбранного узла, а в правой панели – набор контекстных задач и операций, которые администратор (или пользователь) может выполнить над данным узлом.

6. Выбираем верхний узел, узел веб сервера, в котором представлены иконки, отвечающие за параметры работы модулей всего веб сервера, эти параметры наследуются по умолчанию для всех веб сайтов. Убеждаемся, что все необходимые модули установлены и отображены. Снимок экрана при установке конфигурации по умолчанию приведен ниже.

7. В правой панели при выборе узла веб сайта отображаются все операции, возможные для выполнения непосредственно с веб сервером (службами IIS в целом) в данном конексте – перезапуск, останов, запуск, переход к пулам приложений и сайтам.

8. Убеждаемся, что пулы приложений (Application Pools) сконфигурированы. Пулы приложений будут рассмотрены позже. Пулы являются дочерним узлом в дереве конфигурации для узла веб сайта. При установке по умолчанию создается только один пул – DefaultAppPool, в котором регистрируется одно приложение – сконфигурированный по умолчанию веб сайт, работу которого мы уже проверили. См. снимок экрана.

9. Ниже узла пулов приложений в дереве конфигурации находится узел веб сайтов (Sites), при выборе которого отображается список работающих на данном веб сервере веб сайтов. По умолчанию создается один веб сайт под названием Default Web Site с внутренним номером (ID) равным 1, «привязанный» на 80 порт всех IP-адресах всех сетевых интерфейсов к любому URL в запросе, и использующий в качестве домашнего каталога своего контента каталог с путем %SystemDrive%\inetpub\wwwroot (что при установленном Windows Server 2008 на диск C: соответствует C: \inetpub\wwwroot).

10. При выборе в левой панели консоли узла веб сайта (Default Web Site), также, как и в случае с выбором узла веб сервера, в центральной панели отображаются иконки для доступа к параметрам конфигурации различных модулей, на этот раз – конкретного веб сайта. Убеждаемся, что также, как и в случае со всем веб сервером, все необходимые модули представлены в центральной панели.

11. В правой панели консоли, аналогично панели для всего веб сервера, отображаются контекстные команды, правда, на этот раз их список серьезно расширен – старт/стоп/перезапуск процесса веб сайта, просмотр его базовых и расширенных настроек (а не параметров модулей), настройки привязки (адрес, порт, доменное имя – по сочетанию которых будет отвечать на запросы данный веб сайт) и т.п.

В принципе, для базовой проверки работоспособности и целостности установки данных шагов вполне достаточно. Но если вы хотите поближе познакомиться с «полным» набором настроек и конфигурацией «по умолчанию» – то можете проделать следующие шаги.

12. Выберите узел веб сервера в дереве конфигурации в левой панели консоли Internet Information Services (IIS) Manager. В центральной панели кликните на иконку Modules. В центральной панели откроется следующий полный список установленных по умолчанию модулей, представляющий из себя перечень .dll файлов.

13. Чтобы убедиться, что веб сервер будет работать только со статическими файлами (по умолчанию) или только с нужными вам расширениями – выберите снова узел веб сервера и в центральной панели кликните на иконку Handler Mappings. Откроется список «привязки» расширений вызываемых на веб сайте пользователем файлов и привязанных к данным расширениям модулям, выполняющим обработку данного вызова. Обратите внимание, что по умолчанию все файлы привязаны к модулю обработки статических файлов (т.е. запрос какого либо скриптового или исполнимого файла из домашнего каталога веб сайта не будет приводить к его исполнению на сервере, а лишь к передаче данного файла пользователю), а также к модулям документа по умолчанию и просмотра каталога. С этими модулями мы познакомимся позже.

14. И, наконец, для того, чтобы убедиться в безопасности веб сайта – проверьте параметры его аутентификации. Для этого выбираем иконку Authentication в той же центральной панели. По умолчанию никаких модулей аутентификации веб сервер (и веб сайты) не поддерживает. Т.е. все подключения для него анонимны. В чем безопасность? Это значит, что пользователям будет доступен только то содержимое домашних каталогов сайтов – файлы и подкаталоги – которые имеют NTFS разрешения для чтения «всем» (Everyone). В случае, если таких разрешений файл не имеет, пользователю будет отказано в доступе с соответствующей ошибкой 401. Если же пользователь попробует каким-то образом аутентифицироваться в процессе HTTP запроса на сервере – то поскольку никаких модулей аутентификации, кроме анонимного, на веб сервере не установлено – он снова получит соответствующую ошибку 401.

Такие настройки безопасности по умолчанию – только анонимные пользователи – позволяют гарантировать защиту данных на сервере, для которых требуются соответствующие разрешения, а также – что механизм аутентификации веб сервера (которого в данном случае просто нет) не будет использован для перебора паролей и прочих попыток «взлома» через учетные записи.

Итак, сервер установлен и его работоспособность проверена. Теперь достаточно поместить какой либо статический контент (файлы HTML, изображения, документы и файлы для выгрузки пользователями) в домашний каталог его сайта по умолчанию (напоминаю, что это в большинстве случаев C:\inetpub\wwwroot) – и веб сайт под управлением IIS 7.0 начнет работать. Ну, и конечно, для внешних сайтов – не забыть прописать их A-record в вашей доменной зоне на публичном DNS сервере.

В следующей части – установка IIS 7.0 в режиме командной строки, особенности работы IIS 7.0 на Server Core.

Iis события активных серверных страниц (asp)

Обновлен: Ноябрь 2007

Если веб-приложение ASP.NET размещено в IIS 7.0, то параметры конфигурации для приложения можно настроить различными способами. К ним относятся:

Использование служб IIS Manager. Дополнительные сведения см. в разделах Практическое руководство. Открытие диспетчера IIS и Диспетчер служб IIS (Internet Information Services (IIS) Manager).

Непосредственное редактирование файла Web.config. Это можно сделать в Visual Studio или Visual Web Developer или используя текстовый редактор.

Использование средства командной строки служб IIS 7.0 (Appcmd.exe). Оно позволяет указать параметры конфигурации IIS и параметры конфигурации веб-приложения. Дополнительные сведения см. в разделе средство командной строки IIS 7.0 (IIS 7.0 Command-Line Tool).

Использование инструментария управления Windows (WMI). В пространстве имен WebAdministration поставщика WMI IIS 7.0 содержатся классы и методы, позволяющие создавать сценарии, использующиеся при администрировании веб-узлов, веб-приложений и связанных с ними объектов и свойств. Дополнительные сведения см. в разделе IIS 7.0: WMI.

Службы IIS 7.0 имеют модульную архитектуру, позволяющую указать, какие модули составляют используются веб-сервером. После установки IIS 7.0 по умолчанию многие модули выключены. При работе с веб-сайтами ASP.NET может понадобиться включение следующих модулей:

Модуль управления совместимостью с IIS 6, позволяющий Visual Studio использовать вызовы метабазы для взаимодействия с хранилищем конфигураций IIS 7.0.

Модуль проверки подлинности Windows, позволяющий проводить отладку веб-приложений в Visual Studio.

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

Создание настраиваемого модуля управляемого кода и помещение модуля в каталог App_Code веб-приложения.

Регистрация настраиваемого модуля с использованием диспетчера IIS Manager.

Добавление настраиваемого заголовка HTTP с использованием диспетчера IIS Manager.

В этом пошаговом руководстве функциональные возможности модуля не важны. Цель этого пошагового руководства — демонстрация интеграции модуля в конвейер запросов, а также влияния настройки приложения с помощью диспетчера IIS Manager на файл Web.config.

Для выполнения этого пошагового руководства потребуется:

Службы IIS 7.0, установленные и выполняющиеся в ОС Windows Vista или в ОС Windows Server 2008.

По меньшей мере один пул приложений, выполняемый в интегрированном режиме IIS 7.0.

Модуль Совместимость управления IIS 6 , включенный в IIS 7.0.

Visual Studio 2008.

Платформа .NET Framework, версия 3.0 или более поздняя версия.

Административные разрешения на локальном компьютере.

Средство для проверки HTTP-запросов и ответов между локальным компьютером и веб-серверами, например, средство Fiddler, доступное на веб-узле Fiddler Web Debugging Proxy.

Fiddler — это стороннее средство, не поддерживаемое Microsoft.


Для начала потребуется создать новый веб-узел.

Создание нового веб-узла

В Visual Studio нужно создать новый локальный веб-узел HTTP с именем WalkthroughIIS7 .

Дополнительные сведения о создании локального веб-узла IIS см. в разделе Пошаговое руководство. Создание локального веб-узла IIS в Visual Web Developer .

В меню Пуск последовательно выберите пункты Все программы , Стандартные и Выполнить .

В поле Открыть введите inetmgr и нажмите кнопку ОК .

Примечание.

Если включен контроль учетных записей пользователей (UAC), то при попытке доступа к службам IIS Manager может быть отображено сообщение. При появлении данного сообщения нажмите кнопку Продолжить . Дополнительные сведения см. в разделе Контроль учетных записей (User Account Control).

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

Сведения об задании режима веб-приложения см. в разделе Настройка режима обработки запросов для пула приложений (Configure the Request-Processing Mode for an Application Pool).

Теперь можно создать настраиваемый HTTP-модуль.

Создание настраиваемого HTTP-модуля

В обозревателе решений Visual Studio щелкните правой кнопкой мыши узел веб-проекта и выберите пункт Добавить новый элемент .

Откроется диалоговое окно Добавление нового элемента .

Под заголовком Установленные шаблоны Visual Studio выберите Класс .

Выберите предпочитаемый язык программирования.

Для имени класса введите CustomModule и нажмите Добавить .

Если веб-узел еще не содержит папки App_Code, отобразится сообщение с запросом подтверждения помещения класса в папку App_Code. Если это так, нажмите кнопку Да .

В файле класса удалите существующий код и замените его следующим кодом:

Этот код выполняет следующие действия:

Определяет настраиваемый модуль управляемого кода, реализующий интерфейс IHttpModule .

Определяет обработчик событий для события BeginRequest экземпляра HttpApplication . Обработчик событий определяет настраиваемый заголовок, добавляемый к коллекции заголовка ответа.

Добавляет обработчик к конвейеру запросов для уведомления в методе Init модуля.

Поскольку класс реализует интерфейс IHttpModule , класс должен реализовать метод Init и метод Dispose . Метод Dispose в этом модуле не имеет функциональных возможностей, но в нем можно при необходимости реализовать логику удаления.

В меню Построение выберите команду Построить веб-узел , чтобы убедиться, что ошибки в модуле отсутствуют.

В качестве последней задачи в этом подразделе нужно создать страницы ASP.NET и HTML, используемые позднее в этом пошаговом руководстве для проверки настраиваемого модуля.

Создание тестовых страниц ASP.NET и HTML

Добавьте новую однофайловую веб-страницу ASP.NET с именем ASPXpage.aspx в корневую папку приложения.

Удалите существующую разметку и замените ее на следующую:

Добавьте новую HTML-страницу с именем HTMLPage.htm в корневую папку веб-приложения.

Добавьте следующую разметку на HTML-страницу:

Сохраните все изменения.

Запустите по отдельности страницу ASPXpage.aspx и страницу HTMLpage.htm, чтобы убедиться в возможности их просмотра в обозревателе.

Примечание.

Не закрывайте приложение Visual Studio. Позднее потребуется вернуться к этому приложению, чтобы проверить изменения конфигурации, осуществленные с помощью диспетчера IIS Manager.

На этом этапе страницы выполняются, но не вызывают настраиваемый модуль. В следующей процедуре необходимо добавить настраиваемый модуль к конвейеру запросов.

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

Регистрация настраиваемого модуля управляемого кода

В меню Пуск последовательно выберите пункты Все программы , Стандартные и Выполнить .

В поле Открыть введите inetmgr и нажмите кнопку ОК .

Примечание.

Если включен контроль учетных записей пользователей (UAC), то при попытке доступа к службам IIS Manager может быть отображено сообщение. При появлении данного сообщения нажмите кнопку Продолжить . Дополнительные сведения см. в разделе Контроль учетных записей (User Account Control).

В области Подключения разверните имя компьютера или сервера, на котором размещен веб-узел.

Разверните папку Узлы .

Выберите веб-узел WalkthroughIIS7 . В Windows Server 2008, если веб-приложение является приложением веб-узла, сначала разверните этот веб-узел, а затем выберите WalkthroughIIS7 .

По умолчанию центральная часть диспетчера IIS Manager отображает параметры конфигурации веб-сервера по областям. Для веб-приложения WalkthroughIIS7 существуют две области: ASP.NET и IIS .

В разделе IIS центральной области дважды щелкните значок Модули .

В области сведений Модули в центральной области будут показаны все модули, настроенные в данный момент для IIS.

В области Действия щелкните Добавить управляемый модуль .

Откроется диалоговое окно Добавление управляемого модуля .

Введите CustomModule в поле Имя .

Именем может быть любое слово или фраза, описывающая модуль. В этом пошаговом руководстве будет использовано только имя модуля.

В списке Тип выберите или введите полное имя управляемого типа для модуля.

Тип CustomModule появится в списке, поскольку конфигурация IIS включает любые классы в папке App_Code, реализующие IHttpModule .

Убедитесь, что флажок Вызывать только по запросу приложений ASP.NET или управляемых обработчиков снят.

В данном пошаговом руководстве необходимо, чтобы модуль был применен ко всем запросам в конвейере, а не только к запросам ASP.NET.

Нажмите кнопку ОК .

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

Добавление настраиваемого заголовка ответа

В левой области диспетчера IIS Manager щелкните имя узла WalkthroughIIS7 , чтобы отобразить основную область конфигурации для узла.

В центральной области в разделе параметров IIS дважды щелкните значок Заголовки ответов HTTP .

Подробные сведения функции Заголовки ответов HTTP будут отображены в центральной области. В ней будут показаны все определенные в данный момент заголовки ответов HTTP.

В области Действия щелкните Добавить .

Откроется диалоговое окно Добавить HTTP-заголовок ответа .

В текстовом поле Имя введите CustomHeader1 .

Именем может быть любое слово или фраза, описывающая заголовок.

В текстовом поле Значение введите значение SampleHeader .

Теперь статическое сжатие будет отключено. Это препятствует сжатию статического содержимого, например страниц HTML.

Отключение статического сжатия

Щелкните имя узла WalkthroughIIS7 в левой области, чтобы отобразить основную область конфигурации узла в центральной области.

В центральной области диспетчера IIS Manager дважды щелкните значок Сжатие в разделе параметров IIS .

Подробные сведения функции Сжатие будут отображены в центральной области.

Убедитесь, что флажок Включить сжатие статического содержимого не установлен.

В данном пошаговом руководстве были выполнены задачи, связанные с изменением параметров конфигурации с помощью диспетчера IIS Manager. В этой процедуре будут просмотрены изменения в файле Web.config приложения.

Проверка регистрации модуля в файле Web.config

Вернитесь к приложению Visual Studio и к приложению WalkthroughIIS7 .

В обозревателе решений щелкните правой кнопкой мыши имя веб-узла и выберите команду Обновить папку .

Это приведет к тому, что представление папки веб-узла в Visual Studio будет синхронизировано с папкой и файлами на диске.

Если приложение изначально не содержало файла Web.config, то теперь у веб-приложения будет файл Web.config. Если приложение уже содержало файл Web.config, то в файл будут внесены изменения.

В Обозревателе решений дважды щелкните файл Web.config, чтобы просмотреть его содержимое.

Секция system.webServer содержит изменения в параметрах конфигурации, внесенные с помощью диспетчера IIS Manager. В секции system.webServer содержатся следующие дочерние элементы:

Элемент modules , регистрирующий настраиваемый модуль для конвейера обработки запросов.

Элемент httpProtocol , определяющий настраиваемый заголовок ответа.

Элемент urlCompression , отключающий статическое сжатие.

Секция system.webServer будет выглядеть примерно так:

Дополнительные сведения о секции system.webServer см. в разделе Использование конфигурации ASP.NET и в разделе IIS 7.0: system.webServer (IIS Settings Schema) (IIS 7.0: system.webServer (схема параметров IIS)).

Службы IIS 7.0 имеют интегрированный конвейер запросов. Запросы для всех ресурсов приложения (например, для ASPX-страницы или HTM-страницы) могут вызывать уведомления конвейера в модуле управляемого кода, как и в управляемом модуле, созданном в ходе этого пошагового руководства.

Примечание.

При настройке модуля управляемого кода с помощью диспетчера IIS Manager не был выбран параметр Вызывать только по запросу приложений ASP.NET или управляемых обработчиков . Если бы был выбран этот параметр, то настраиваемый модуль получал бы уведомления конвейера только для ресурсов ASP.NET и не получал бы для статических ресурсов, таких как HTML-файлы.

Проверка применения настраиваемого модуля ко всем ресурсам

В Visual Studio откройте страницу ASPXpage.aspx и нажмите сочетание клавиш CTRL + F5 для отображения страницы в обозревателе.

Настраиваемый заголовок, определенный в модуле, отобразится в обозревателе. На странице ASP.NET невозможно получить доступ к настраиваемому заголовку, определенному IIS, поскольку сведения о заголовке добавляются после передачи содержимого страницы в поток. Однако можно подтвердить установку заголовка с использованием средства, отслеживающего трафик HTTP, например, Fiddler.

Откройте средство наблюдения за трафиком HTTP и обновите страницу ASPXpage.aspx в обозревателе.

Примечание.

Если URL-адрес для страницы ASPXpage.aspx использует localhost, измените localhost на имя компьютера, на котором установлены службы IIS 7.0. В типовом сценарии разработки это тот же компьютер, на котором выполняется Visual Studio.

Убедитесь, что CustomHeader1 и CustomHeader2 появляются в коллекции заголовков ответа.

Просмотрите HTMLPage.htm в обозревателе.

Убедитесь, что CustomHeader1 и CustomHeader2 появляются в коллекции заголовков ответа.

Это пошаговое руководство предоставило введение в настройку ASP.NET в IIS 7.0. Параметры конфигурации для веб-сервера IIS 7.0 и для ASP.NET объединены в один файл конфигурации, который можно редактировать с использованием одного интерфейса администрирования.

Может также возникнуть необходимость узнать об изменении других параметров в диспетчере IIS Manager и о том, как изменения отражаются в файле конфигурации. Дополнительные сведения см. в разделе Internet Information Services (IIS).

IIS 7.0 Построение решений веб-сервера с использованием сквозной расширяемости

Веб-платформа IIS 7.0 поддерживает большее число технологий инфраструктуры приложений для размещения многофункциональных приложений, чем любая предыдущая версия IIS, она буквально напичкана функциями, которые можно использовать для развертывания этих приложений сразу же после установки. Однако в то же время вы видите (в установке Windows®) не обязательно то, что всегда получаете.
Архитектура IIS 7.0 выполнена таким образом, что позволяет ей быть расширяемой сверху донизу, это дает возможность заменять любую часть встроенного набора функций на собственные разработки, которые наилучшим образом соответствуют вашим требованиям. В результате этого вместо латания лоскутного одеяла из подключаемых модулей IIS 7.0 дает совершенно уникальные возможности по расширяемости путем реализации всех собственных функций поверх общедоступной модели расширяемости. Эта конструкция прослеживается по всей платформе, начиная от самого модульного механизма веб-сервера и до системы настройки консоли диспетчера IIS.
В этой статье я постараюсь погрузиться в тонкости модели расширения IIS 7.0, рассмотрев для этого исходный код общего пользования проекта модуля изменения ответа, который позволяет получать отклики приложений IIS и изменять их «на лету», используя для этого настраиваемые правила изменения откликов. Вначале я построю модуль веб-сервера, воспользовавшись встроенной в сервервозможностью расширения ASP.NET. Затем я создам функции развертывания и управления для модуля, разработав раздел пользовательской настройки и создав специальную страницу управления для диспетчера IIS.

Расширение веб-сервера

Модульная архитектура IIS 7.0 предоставляет возможность полностью перестроить веб-сервер под требуемую рабочую нагрузку. Зачастую это может быть выполнено просто путем установки только тех функций, которые необходимы для вашего приложения, в результате чего появляется веб-сервер с урезанной функциональностью, позволяющей делать только то, что необходимо, и ничего более.
Однако это только первый шаг. Зачастую нужная рабочая нагрузка требует наличия дополнительных функций, которые могут не входить во встроенный набор функций IIS. Или же в некоторых случаях приложениям может потребоваться специальный набор функций, для выполнения которых встроенные функции недостаточно приспособлены. Поскольку все функции IIS 7.0 построены на общедоступных интерфейсах расширяемости API, вы можете заменить любой из них собственной разработкой, которая наилучшим образом соответствует вашим требованиям.
IIS 7.0 предоставляет два способа разработки модулей веб-сервера. Во-первых, можно использовать новый интерфейс API для модулей на C++, на котором основана большая часть встроенных функций. Интерфейс API модулей заменяет расширение ISAPI и интерфейс API фильтра, применявшиеся в предыдущих версиях IIS. Этот интерфейс API является существенным усовершенствованием по сравнению с ISAPI, поскольку он способен поддерживать все функции IIS 7.0 и гораздо проще для использования в программировании. Узнать подробней об усовершенствованиях в этом интерефейсе API можно по адресу: mvolo.com/blogs/serverside/archive/2006/10/07/10-reasons-why-server-development-is-better-with-IIS7.aspx.
Во-вторых, в IIS 7.0 введена интеграция с ASP.NET, которая позволяет разрабатывать модули IIS 7.0 с использованием хорошо знакомых интерфейсов API модулей в ASP.NET. В объединенном режиме ASP.NET эти модули становятся полноправными участниками конвейерной обработки запросов IIS, как видно из рис. 1. Это позволяет модулям ASP.NET получать доступ ко встроенным объектам IIS, таким как запросы и ответы, на всех стадиях обработки и обрабатывать запросы для всех типов ресурсов — не только для тех, которые обрабатываются платформой ASP.NET.

Рис. 1 Модули ASP.NET в обработке запросов IIS 7.0

Это позволяет использовать одинаково по всему веб-узлу такие многосторонние функции ASP.NET, как проверка подлинности на основе форм, элементы управления входом в систему и служба членства. Для более подробного изучения того, как объединенный режим ASP.NET может быть использован с целью повышения функциональных возможностей приложений, написанных не для платформы ASP.NET, прочтите мою статью в январском номере журнала MSDN® Magazine за 2008 год, расположенную по адресу: msdn.microsoft.com/msdnmag/issues/08/01/PHPandIIS7.
Для разработчиков истинная ценность объединенного режима ASP.NET заключается в возможности наращивать функциональность веб-сервера IIS с использованием платформы Microsoft® .NET Framework. Это дает существенные преимущества при быстрой разработке приложений путем обеспечения возможности строить эти приложения на основе широкой поддержки платформ .NET Framework, ASP.NET, а также других платформ, таких как Windows Workflow Foundation.

Модуль изменения ответа

Объединенный конвейер ASP.NET дает возможность модулям ASP.NET выполнять широкий спектр задач в ходе обработки каждого запроса. Этот спектр содержит все, начиная от задач проверки подлинности или авторизации и до изменения исходящих ответов перед их отправкой клиенту.
Назначением модуля изменения ответа является выполнение изменения ответа: он позволяет изменять существующие ответы «на лету» при помощи набора правил замены. Для этого можно использовать механизм фильтрации ответов ASP.NET, который, благодаря объединения со средой выполнения, обеспечивает фильтрацию исходящих ответов любого содержания, включая статические файлы, а также сценарии ASP и PHP.
Если в прошлом вы разработали модуль ASP.NET, то вас, несомненно, обрадует тот факт, что вы сможете использовать те же интерфейсы API для разработки модулей ASP.NET на платформе IIS 7.0. Фактически, имеющиеся у вас модули продолжают работать точно так же, как они работали в предыдущих версиях IIS (если только не нужно использовать преимущества объединенного режима IIS 7.0 и запускать их для обработки всех запросов). Модуль является классом, реализующим интерфейс System.Web.IHttpModule и регистрирующим обработчики событий для событий конвейерной обработки одного или нескольких запросов. Модуль изменения ответов именно такой:

По существу, модуль подписывается на событие PreRequestHandlerExecute, которое происходит всякий раз перед выполнением обработчика запроса. Метод OnPreRequestHandlerExecute используется для чтения сведений настройки с целью определить, имеет ли ответ какие-нибудь применимые для него правила замены (подробнее о настройке — далее в этой статье), и в случае наличия таковых регистрировать поток фильтра ответов, который затем будет использован для фильтрации исходящих ответов, как показано на рис. 2.
Figure 2 Фильтр ответов

Фильтрация ответов выполняется внутри класса ChainedBufferedStringResponseFilter, который отвечает за преобразование байтов ответов в строку при помощи набора символов ответов, а также за вызов одного или несколько фильтров ответов, которые применимы к данному запросу. Модуль связывает фильтр с ответом путем установки свойства HttpResponse.Filter. Это свойство принимает все объекты, порожденные от абстрактного класса System.IO.Stream, и позднее использует их для фильтрации тела экземпняра исходящего ответа.
Функция фильтрации ответов ASP.NET — всего лишь один из механизмов, которые становится возможным использовать при разработке модулей ASP.NET для объединенного режима платформы IIS 7.0. Кроме того, можно переписывать URL-адреса, выполнять проверку подлинности и авторизацию запросов, модифицировать или выпускать файлы «cookie» и заголовки ответов, журналировать запросы и многое другое. Большинство задач, которые ранее требовали разработки в среде ISAPI в машинном коде, теперь могут быть реализованы путем простого написания модулей ASP.NET. Поэтапные указания по сборке модулей ASP.NET для IIS 7.0, параметрам среды разработки и выполнению развертывания можно найти по адресу: mvolo.com/blogs/serverside/archive/ 2007/08/15/Developing-IIS7-web-server-features-with-the-.NET-framework.aspx.
При разработке модуля IIS 7.0 можно использовать возможности ряда функций IIS, используемых для целей управления и развертывания. Одна из таких функций — возможность указывать пользовательскую настройку модуля в файлах настройки IIS 7.0 и либо принудительно развертывать эту настройку автоматически самим приложением, либо управлять ею с помощью ряда средств администрирования IIS 7.0 и интерфейсов API. Выполнение такой процедуры является залогом того, что все функции, выполняемые модулем, будут правильно настроены и управляемы конечными пользователями.

Расширение настройки

Новая система настройки является основой для большого числа основных вариантов развертывания и управления, возможных для платформы IIS 7.0. Вместо того, чтобы быть машинно-ориентированным зранилищем настройки закрытого формата, система настройки IIS 7.0 основана на структурированных файлах настройки формата XML, располагающихся в тех же файлах настройки, используемых системой настройки ASP.NET. Более того, синтаксис данных настройки IIS идентичен синатксису данных настройки ASP.NET; эти данные могут быть совместно записаны в распространяемые файлы web.config, с которыми разработчики ASP.NET очень хорошо знакомы.
Такая схема открывает многие двери. Во-первых, она позволяет приложениям указывать данные настройки IIS вместе со своим прикладным содержимым, что упрощает процесс их развертывания до простой публикации содержимого на сервере. Это гарантирует, что приложения будут работать правильно без необходимости изменять данные машинной настройки, хранящиеся на каждом сервере, на котором эти приложения развертываются, а также без необходимости иметь полномочия администратора на каждом сервере. Структурированный файл настроки формата XML совместно с возможностью размещать настройку ASP.NET вместе с настройкой IIS в одном файле значительно упрощает задачу разработчиков создавать данные настройки, относящиеся к IIS, и управлять ими. Эта задача может выполняться с помощью редактора файлов XML, например Notepad и Visual Studio®, или может быть автоматизирована с помощью интерфейсов API настройки, предоставляемых стеком администрирования IIS 7.0.
Но самым замечательным здесь является тот факт, что система настройки IIS 7.0 является полностью расширяемой. Возможность предоставлять специальному веб-серверу право публикации настроек, которые могут устанавливаться и управляться вместе с настройкой IIS 7.0, играет ключевую роль в построении полных решений для IIS 7.0.
В отличие от системы настройки .NET, добавление нового раздела настройки IIS 7.0 не требует использования программного кода, поскольку сами разделы IIS 7.0 определяются с использованием схемы, основанной на XML. Фактически, все встроенные разделы настройки IIS 7.0 определяются с использованием этого механизма. Найти определения всех разделов настройки IIS можно найти в каталоге %windir%\system32\inetsrv\config\schema в файле IIS_Schema.xml. Например, раздел настройки , который включает и настраивает документы по умолчанию для вашего приложения, определяется следующим образом:

Такая схема определяет все элементы и атрибуты, которые составляют раздел настройки, их типы и дополнительные сведения, такие как определения коллекций и характер проверки атрибутов. Для получения дополнительных сведений о синтаксисе и определениях схем см. комментарии в заголовке файла настройки IIS_Schema.xml.

Настройка модуля изменения ответа

Модуль изменения ответа требует наличия собственного раздела настройки для настройки ряда специальных параметров, в том числе сведений о том, какие правила фильтрации применимы для данного приложения. Чтобы предоставить возможность использовать этот раздел в файлах настройки IIS, в первую очередь необходимо создать файл схемы, который описывал бы структуру раздела (см. рис. 3). Этот файл определяет раздел responseModification и его структуру, включая необходимые атрибуты и коллекцию правил фильтрации, которые могут настраиваться для вызова различных фильтров с дополнительной информацией о том, что и чем должно заменяться.
Figure 3 Схема настройки модуля изменения ответа

Для установки этого раздела настройки необходимо сделать две вещи. Во-первых, скопируйте файл responsemod_schema.xml, содержащий сведения о схеме раздела, в папку %windir%\system32\inetsrv\config\schema. Затем объявите раздел настройки в основном файле настройки сервера, applicationHost.config. Последняя задача потребует написания некоторого кода, если вы пожелаете выполнить эту установку с помощью программы.
Чтобы упростить процесс установки раздела настройки IIS 7.0, я написал служебную программу iisschema.exe, которая выполняет обе эти задачи автоматически. Эту программу можно получить по адресу: mvolo.com/blogs/serverside/archive/2007/08/04/IISSCHEMA.EXE-_2D00_-A-tool-to-register-IIS7-configuration-sections.aspx. С использованием этой программы процедура установки раздела схемы настройки становится одношаговой:

После того как схема раздела настройки установлена, а сам раздел объявлен в файле applicationHost.config, можно начать использовать его для определения данных настройки модуля.
Для управления настройкой раздела можно использовать любое из средств настройки IIS или интерфейсов API, точно так же, как это делалось бы с любым встроенным разделом настройки IIS 7.0. Например, я хочу включить функцию изменения ответов для моего приложения с помощью AppCmd, средства командной строки IIS 7.0:

Кроме того, я могу добавить в раздел настройки responseModification коллекцию правил:

Если теперь вы откроете файл web.config в корневой папке веб-узла по умолчанию (обычно это %windir%\inetpub\wwwroot), вы обнаружите следующий код:

Если вы исправили файл приложения web.config с целью изменения данных настройки модуля, а затем загрузили его на сервер, приложение будет настроено таким образом, чтобы использовать эти новые параметры. Точно так же, если вы загрузили приложение на другой сервер, на котором установлен раздел настройки, вы можете быть уверены, что данное приложение будет использовать нужные параметры без необходимости перенастройки его на этом сервере.
В дополнение к AppCmd, теперь можно использовать для управления данными настройки данного раздела любой интерфейс API настройки IIS 7.0, включая управляемый интерфейс Microsoft.Web.Administration, поставщик WMI из IIS 7.0, объекты COM настройки IIS 7.0 , а также Windows PowerShell®. Кроме установки и чтения данных настройки, можно выполнять любые задачи управления, поддерживаемые системой настройки IIS 7.0, включая управление процессом делегирования данного раздела приложениям, защиту их содержимого путем шифрования настройки и т.д. Те мне менее, чтобы эти данные настройки были полезными, вам потребуется возможность читать их из модуля изменения ответа.
Интерфейс API Microsoft.Web.Administration является новым интерфейсом .NET Framework, предоставляемым IIS 7.0; он позволяет программам иметь доступ к данным настройки IIS 7.0. Кроме того, что этот интерфейс предоставляет программам настройки и установки возможность управлять настройкой, он также дает возможность считывать данные настройки непосредственно из управляемого модуля.
Можно использовать этот интерфейс API для чтения раздела настройки из модуля сразу же после регистрации раздела настройки, поскольку интерфейс API предоставляет нестрого типизированную модель для чтения разделов настройки. Перед тем как делать это, вам необходимо добавить ссылку на файл Microsoft.Web.Administration.dll, который находится в папке %windir%\system32\inetsrv. Заметим, что эта библиотека DLL входит в состав только IIS 7.0 под Windows Vista® или Windows Server® 2008 и не поставляется в составе .NET Framework или комплекта SDK для Windows.
После того, как ссылка добавлена, можно читать данные настройки модуля:

Класс WebConfigurationManager в пространстве имен Microsoft.Web.Administration почти идентичен WebConfigurationManager в пространстве имен System.Web.Configuration и призван заменить последний для работы с управляемыми модулями IIS 7.0, выполняющими чтение настройки IIS 7.0. Метод GetSection выбирает объект раздела настройки по пути, указанному в текущем запросе HTTP.

Строго типизированный класс настройки

Объект ConfigurationSection предоставляет нестрого типизированный доступ к любому разделу настройки, не требуя написания дополнительного кода. Можно получить доступ ко включенному атрибуту путем простого извлечения его имени в индексаторе объекта раздела и приведения его к ожидаемому типу.
Тем не менее, можно продвинуться на один шаг вперед, создав строго типизированную оболочку для раздела настройки. Можно быстро создать класс оболочки с помощью служебной программы, написанной Канвальетом Синглой (Kanwaljeet Singla), участником команды IIS; эту программу можно загрузить по адресу: blogs.iis.net/ ksingla/archive/2006/12/04/tool-to-generate-strongly-typed-classes-for-configuration-sections.aspx. Она позволяет создавать класс оболочки для раздела, имеющего примерно такой вид, как показан на рис. 4. Этот класс просто обертывает нижележащий класс ConfigurationSection и предоставляет строго типизированные свойства для доступа к исходным данным настройки.
Figure 4 Строго типизированная обертка раздела настройки

Как видно из реализации свойства Enabled, обертывание атрибутов настройки является достаточно простым. Обертывание дочерних элементов и коллекций требует последующей реализации классов оберток, наследуемых соответственно из ConfigurationElement и ConfigurationCollection (не показаны), точно таких же, как сама обертка раздела.
После того, как класс обертки создан, его можно скомпилировать в отдельную сборку и указать ссылку на него в проекте модулей или просто добавить его в виде файла исходного кода. Это позволит модулю иметь безопасный относительно типов доступ к разделу настройки:

Подобным образом можно получить безопасный относительно типов доступ к коллекции правил изменения ответов и свойствам каждого элемента правил. Это значительно упрощает программирование по сравнению с разделами настройки и сокращает количество ошибок безопасности типов, которые являются довольно частыми в случае нестрого типизированного доступа к данным. Кроме того, поскольку весь код, используемый для доступа к нижележащим данным, создается автоматически с помощью служебной программы, можете настроить программу Visual Studio для автоматического построения классов оберток из файла схемы настройки при очередной компиляции проекта. Это делает управление изменениями, вносимыми в схему раздела настройки, чрезвычайно простым.

Расширение IIS Manager

Итак, я уже показал, как создать модуль изменения ответа и позволить ему читать специальный раздел настройки, который управляет его поведением. Эта настройка может храниться в тех же файлах настройки, что содержат оставшиеся данные настройки IIS, может развертываться вместе с приложением в файлах web.config, а также может обрабатываться с помощью различных программных средств и интерфейсов API, в том числе AppCmd.exe и Microsoft.Web.Administration.
К этому моменту модуль изменения ответа может быть развернут и соответствующим образом настроен в любой среде IIS. Тем не менее, можное продвинуться еще на один шаг вперед, предоставив функции специальные возможности управления для консоли диспетчера IIS. Сделав это, вы получите ряд преимуществ. Это позволит системным администраторам без труда настраивать модуль с помощью консоли диспетчера IIS, не требуя от них править непосредственно файлы настройки или использовать другие низкоуровневые служебные программы и интерфейсы API. Это также позволяет обрабатывать данные настройки модуля с помощью средств удаленного администрирования диспетчера IIS, которые предоставляют пользователю преимущества службы веб-управления (WmSvc).
В отличие от других средств, которые тоже поддерживают функции удаленного администрирования, архитектура удаленного администрирования диспетчера IIS имеет ряд ключевых преимуществ. Во-первых, она позволяет пользователям, не обладающим правами администратора на сервере, управлять веб-узлами и приложениями, которые доступны для них. Во-вторых, механизм удаленного администрирования диспетчера IIS использует протокол HTTPS, а не DCOM, который проще проходит через корпоративные брандмауэры. В сочетании обе эти возможности делают диспетчер IIS Manager привлекательным для делегированного удаленного управления веб-узлами IIS, особенно в средах совместного веб-размещения.
В полном соответствии с основной идеей IIS 7.0, диспетчер IIS имеет расширяемую архитектуру, на которой основано большинство встроенных функций диспетчера IIS. С целью упрощения случая удаленного управления каждая функция управления состоит из двух частей: компонентов клиентской части, которая предоставляет пользовательский интерфейс внутри диспетчера IIS, и серверных компонентов, которые предоставляют собственно сами службы управления.
Служба на стороне сервера загружается внутри диспетчера IIS Manager в случаях локального управления или внутри службы веб-управления в случаях удаленного управления. Во втором случае диспетчер IIS поддерживает необходимый обмен данными между компонентами в диспетчере IIS на машине клиента и службой, запущенной внутри WmSvc на машине принимающего сервера.

Создание службы

Клиентские и серверные компоненты обычно выполнены в виде двух отдельных сборок .NET, которые не ссылаются друг на друга. Обмен данными между клиентскими и серверными компонентами осуществляется посредством абстракции ModuleServiceProxy диспетчера IIS, которая использует для обмена информацией набор нестрого типизированных свойств и основных типов .NET.
Серверная сборка обычно содержит реализацию класса Microsoft.Web.Management.Server.ModuleProvider, который выполняет требуемую регистрацию служб и клиентских модулей, а также реализацию класса Microsoft.Web.Management.Server.ModuleService, который представляет методы служб для выполнения требуемых задач управления.
Моя сборка Mvolo.ResponseModificationUI.Server.dll содержит класс ResponseModificationModuleProvider, который отвечает за регистрацию класса служб ResponseModificationModuleService в дополнение к классу клиентского модуля ResponseModificationModule, как это показано на рис. 5.
Figure 5 Класс поставщика модулей

Класс ResponseModificationModuleService порождается от класса ConfigurationModuleProvider, который предоставляет встроенную поддержку для управления функциями делегирования диспетчера IIS, основанными на состоянии делегирования нижележащего раздела настройки. Все, что нужно сделать, — указать имя раздела настройки, responseModification, и диспетчер IIS автоматически переключит состояние делегирования функций в зависимости от того, заблокирован или разблокирован этот раздел для отдельных путей настройки. Инфраструктура Microsoft.Web.Management предоставляет несколько других базовых классов ModuleProvider, которые поддерживают немного другие случаи делегирования для средства диспетчера IIS.
Метод GetModuleDefinition возвращает тип модуля диспетчера IIS, который будет создан на стороне клиента, чтобы зарегистрировать требуемые компоненты интерфейса пользователя диспетчера IIS, такие как страница управления.
Обратите внимание на то, что тип класса ResponseModificationModule на стороне клиента — строковый, но не объект типа Type, поскольку серверная сборка может не ссылаться на сборку клиента, которая будет загружена в диспетчер IIS на машине удаленного клиента. Это один из побочных эффектов, обусловленный тем фактом, что компоненты клиента и сервера могут быть запущены в разных процессах и не могут совместно использовать пользовательские типы.
Класс ResponseModificationModuleService отвечает за реализацию функций управления и использование методов служб, которые вызваются страницей управления в диспетчере IIS (см. рис. 6).
Figure 6 Класс службы модулей

Метод GetFilterRules является примером использования нескольких методов службой, выполняющей задачи управления с использованием системы настройки, а также других ресурсов, локальных для сервера. Экземпляр службы всегда создается на сервере, так что он постоянно работает на локальных ресурсах, поэтому нет необходимости волноваться о раздельном доступе к ресурсам в случае удаленного администрирования. Обратите внимание на то, что я снова использую интерфейс API Microsoft.Web.Administration для доступа к разделу настройки responseModification, при этом использую строго типизированную обертку ResponseModificationConfigurationSection, созданную для обеспечения доступа модуля к настройке.
Свойство ManagementUnit является основной точкой доступа к локальному серверу, оно предоставляет ряд других объектов, которые обеспечивают доступ к системе настройки и другим объектам управления, сосредоточенным на сервере, которые были созданы с помощью платформы Microsoft.Web.Management с целью помочь в реализации задач управления сервером. Практический опыт показывает, что реализации служб должны всегда использовать блок управления для задач управления локальной настройкой, а не создавать собственные системы настройки.
Методы наподобие GetFilterRules могут возвращать клиенту данные, используя основные типы, например, ArrayList, для пересылки данных клиентским компонентам. Снова обратите внимание на то, что нельзя осуществлять обмен данными ипри помощи строго типизированных классов, определенных на серверной или клиентской сборках, потому что они предназначены для раздельного использования и не должны ссылаться друг на друга. Служба ResponseModificationModuleService также определяет дополнительные методы служб, аналогичные GetFilterRules, в том числе EditFilterRule, AddFilterRule и DeleteFilterRule, предназначенные для выполнения операций управления, которые могут быть затребованы страницей модуля изменения ответа.

Создание страницы модуля
Клиентские компоненты определяют функции графического интерфейса пользователя (GUI), предоставляемые пользователю с помощью диспетчера IIS. Клиентская сборка обычно содержит реализацию следующих классов:
Класс Microsoft.Web.Management.Client.Module, ответственный за регистрацию всех требуемых страниц диспетчера IIS и других расширений пользовательского интерфейса.
Класс Microsoft.Web.Management.Client.ModulePage, который содержит описание текущей страницы управления, отображаемой диспетчером IIS.
Класс Microsoft.Web.Management.Client.ModuleServiceProxy, коорый предоставляет клиентские компоненты совместно с классом локального прокси для вызова методов служб, используемых ModuleService.
Сборка Mvolo.ResponseModificationUI.Server.dll содержит класс ResponseModificationModule, показанный на рис. 7 (не путать собственно с классом IhttpModule, предоставляющим службы модуля при конвейерной обработке запросов IIS), который предоставляет главную точку входа для регистрации всех требуемых компонентов пользовательского интерфейса в диспетчере IIS. Этот класс регистрирует класс ResponseModificationModulePage, который содержит описание текущей управляющей страницы.
Figure 7 Класс модулей

Каждая реализация модуля создается однократно за время управляющего подключения, выоплненного диспетчером IIS, она ответственна за регистрацию всех страниц управления и элементов пользовательского интерфейса, необходимых для данного подключения. ResponseModificationModule регистрирует класс ResponseModificationModulePage, который определяет содержимое управляющей страницы.
Честно говоря, я не большой поклонник программирования пользовательских интерфейсов, я предпочел бы программировать низкоуровневые серверные программы, которые не требуют разработки интерфейса. К счастью для меня, платформа Microsoft.Web.Management предоставляет целый ряд базовых классов и поддерживающих классов, предназначенных для создания обычных управляющих страниц, включая класс Microsoft.Web.Management.Client.Win32.ModuleListPage, который я использовал для ResponseModificationModulePage.
Этот класс имеет встроенное представление в виде списка для просмотра списков элементов и работы с ними, включая упорядочение списков и работу с элементами списка. С минимальными переделками я смог создать страницу управления, содержащую перечень правил изменения ответов (см. центральную панель на рис. 8).

Рис. 8 Страница изменения ответов в диспетчере IIS

Затем я создал перечень действий, показанный в правом окне, позволяющий добавлять, изменять и удалять правила изменения ответов. При создании этого перечня задач я использовал возможности класса Microsoft.Web.Management.Client.TaskList (см. правую панель на рис. 8).
Еще немного усилий, и функция изменения, показанная на рис. 8, является на свет. Можно изучить детали пользовательского интерфейса, посмотрев исходный код для платформы изменения ответа.
Операции создания новой страницы, добавления, правки и удаления, запускаемые с панели действия, выполняются с помощью методов класса ResponseModificationModuleServiceProxy, который предоставляет локальный прокси для методов модулей, вызываемых службой модулей:

Диспетчер IIS автоматически передает вызовы, сделанные к классу прокси службы модулей, на связанную службу модуля по каналу обмена данными, который может представлять собой локальный канал совместно используемой памяти или канал https на удаленный сервер.

Развертывание расширения

При развертывании расширения диспетчера IIS учтите, что нужно зарегистрировать тип поставщика модуля в файле настройки диспетчера IIS на сервере (%windir%\system32\inetsrv\config\administration.config). Настройка, показанная на рис. 9, регистрирует поставщик модуля и предоставляет возможность использовать его на всех веб-узлах по умолчанию. Заметим, что и клиентская, и серверная сборки, образующие расширение, Mvolo.ResponseModificationUI.Server.dll и Mvolo.ResponseModificationUI.Client.dll, должны быть зарегистрированы в глобальном кэше сборок (GAC) и, следовательно, должны иметь строгое имя и подпись. Это требование, позволяющее выполнить установку расширений диспетчера IIS.
Figure 9 Настройка расширения диспетчера IIS

Когда диспетчер IIS используется для удаленного управления сервером, он автоматически предложит пользователю загрузить клиентскую сборку вне зависимости от того, есть она уже или еще нет (это происходит при управлении IIS 7.0 на Windows Server 2008 клиентом Windows Vista SP1, Windows XP или Windows Server 2003 с использованием удаленного диспетчера IIS, который доступен по адресу: iis.net/ downloads/?tab >

Окончательная сборка

После развертывания модуля и установки схемы раздела настройки и расширения диспетчера IIS функция изменения ответа готова к использованию. Теперь можно применять эту функцию к любому приложению на вашем сервере и настраивать его с помощью любой программы настройки или интерфейсов API IIS 7.0.
Кроме того, можно использовать диспетчер IIS для быстрого управления правилами изменения ответов в приложениях как на локальном, так и на удаленном сервере. Используя поддержку делегирования диспетчера IIS, можно установить, кто из пользователей имеет право удаленно создавать и изменять правила изменения ответов для определенных веб-узлов сервера.
Для демонстрации функции изменения ответов в действии на рис. 10 показано, как настроены правила для приложения Qdig моей галереи изображений (см. msdn.microsoft.com/msdnmag/issues/08/01/PHPandIIS7). На рис. 11 показано, как использован фильтр Mvolo.ResponseModification.Filters.RegExReplace, поставляемый в составе платформы изменения ответа, для вставки текста колонтитулов на всех страницах веб-узла без изменения исходного кода приложения.
Figure 10 Включение колонтитулов

Рис. 11. Использование модуля изменения ответов для изменения ответов

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

Илон Маск рекомендует:  Шаблон сайта отпуск HTML, CSS, Шрифты, Photoshop (psd), 2 страницы
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Примечание.