Asp введение в метабазу iis

Содержание

Установка и конфигурирование IIS

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

В этой и следующих статьях мы рассмотрим различные варианты развертывания. Однако во всех случаях основные предпосылки остаются неизменными. На рабочей станции имеется готовый веб-сайт, который нужно развернуть на сервере, чтобы он был доступен клиентам. Для ASP.NET таким сервером является , а его текущей версией — IIS 8. Когда он был впервые реализован, IIS представлял собой базовый веб-сервер. С годами IIS развился в сложный сервер приложений, предоставляющий широкое множество функциональных средств, наиболее важным из которых является поддержка хостинга приложений ASP.NET.

В этой статье основное внимание уделяется IIS 8. Хотя машина, на которой запущен IIS 8, здесь называется сервером, IIS можно запускать под управлением версий Windows как для рабочей станции, так и для сервера. На рабочих станциях доступны не все, но большинство функциональных возможностей, что позволяет размещать сложные веб-сайты. По возможности мы рекомендуем использовать Windows Server, однако недорогой альтернативой могут послужить Windows 7 или Windows 8.

В Microsoft привязывают выпуски IIS с выпусками Windows. В состав Windows Server 2008 и Windows Vista входит версия IIS 7.0, в состав Windows Server 2008 R2 и Windows 7 — версия IIS 7.5, а в состав Windows Server 2012 и Windows 8 — IIS 8. Версии — 7.0 и 7.5 — в Microsoft обобщенно называют IIS 7, что может вносить путаницу. Версию IIS, поддерживаемую операционной системой, изменить нельзя — Windows Server 2008 будет использовать только IIS 7.0. Например, модернизировать ее до версии IIS 7.5, используемой в Windows Server 2008 R2, не получится.

Установка IIS

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

Установка IIS на настольных версиях Windows (Windows Vista, Windows 7 и Windows 8)

Каждая версия операционной системы Windows предлагает свою версию IIS — IIS 8 (в Windows 8), IIS 7.5 (в Windows 7) или IIS 7 (в Windows Vista). Во всех этих версиях Windows, IIS включен, но изначально не установлен. Чтобы установить его, необходимо выполнить следующие действия:

Откройте панель управления.

Нажмите кнопку «Включение или отключение компонентов Windows». Теперь вам нужно подождать, пока Windows исследует вашу систему.

Найдите элемент Internet Information Services (Службы IIS) в верхней части списка и нажмите на галочку чтобы включить его:

Обратите внимание, что Windows позволяет включить множество компонентов IIS: поддержка FTP-сервера, дополнительные инструменты управления, службы обратной совместимости с IIS 6 и т.д.

Убедитесь, что вы выбрали поддержку ASP.NET. Для этого раскройте узел Службы Интернета Компоненты разработки приложений ASP.NET (Internet Information Services World Wide Web Services Application Development Features ASP.NET):

Если вы хотите использовать поддержку IIS в Visual Studio, которая позволяет вам создавать виртуальные каталоги IIS непосредственно в диалоговом окне New Web Site, вам нужно выбрать пункт «Совместимость управления IIS 6» в разделе «Средства управления веб-сайтом» (Web Management Tools IIS 6 Management Compatibility).

Как только вы выбрали нужные параметры IIS, нажмите кнопку OK для завершения установки.

Установка IIS в Windows Server 2008

Установка и настройка IIS одинакова для Windows Server 2008 и Windows Server 2008 R2. Необходимые шаги описаны ниже:

Запустите диспетчер сервера. Чтобы сделать это, нажмите кнопку Start и выберите All Programs Administrative Tools Server Manager.

Выберите узел Roles в дереве слева.

В правой части окна нажмите на ссылке Add Roles. Это открывает мастер, позволяющий добавить новую роль сервера.

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

После установки вам будет предложено настроить веб-сервер. Как в настольных версиях Windows, вы можете выбрать специфические особенности IIS 7, которые должны быть включены.

Если вы работаете в ASP.NET с версией .NET Framework 4.5, то эту версию .NET Framework необходимо будет установить (центр разработчиков .NET Framework)

Установка IIS в Windows Server 2012

Процесс установки IIS в Windows Server 2012, по существу, такой же, как и в Windows Server 2008. Основное различие заключается в том, что пользовательский интерфейс несколько отличается. Подробное описание вы можете найти перейдя по ссылке Installing IIS 8 on Windows Server 2012.

Управление IIS

При установке IIS, он автоматически создает каталог с именем C:\inetpub\wwwroot, который представляет ваш веб-сайт. Все файлы в этом каталоге будет отображаться, как будто они находятся в корневом каталоге вашего веб-сервера.

Чтобы добавить дополнительные страницы на ваш веб-сервер, можно скопировать файлы HTML, ASP или ASP.NET напрямую в каталог C:\Inetpub\wwwroot. Например если добавить файл TestFile.html в этот каталог, вы можете запросить его в браузере через URL-адрес http://localhost/TestFile.html. Вы даже можете создавать вложенные папки для группирования связанных ресурсов. Например, вы можете получить доступ к C:\inetpub\wwwroot\MySite\MyFile.html через браузер, используя URL-адрес http://localhost/MySite/MyFile.html.

Каталог wwwroot удобен для запуска простых примеров и статичных страниц. Для правильного использования ASP.NET вы должны сделать свой собственный виртуальный каталог для каждого веб-приложения, которое вы создаете. Например, вы можете создать папку с любым именем на любом диске вашего компьютера и поместить ее в виртуальный каталог IIS как будто она расположена в каталоге C:\inetpub\wwwroot.

Прежде чем начать работу, вам нужно запустить диспетчер служб IIS. Его можно найти в меню Start (Пуск). Конкретное расположение может зависеть от используемой версии Windows (IIS Диспетчер служб IIS). Ярлык программы будет располагаться в разделе Programs (Программы) или Administrative Tools (Администрирование). Начальная страница IIS Manager показана на рисунке ниже:

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

Если развернуть элемент сервера в древовидном представлении в левой части экрана, отобразится элемент Sites (Сайты), содержащий единственную запись Default Web Site (Веб-сайт по умолчанию). Сайт — это коллекция файлов и каталогов, образующих веб-сайт. На одном сервере IIS может поддерживать несколько сайтов, как правило, на различных портах TCP/IP (по умолчанию используется порт 80). Сочетание имени сервера и порта сайта образует первую часть URL-адреса. Например, при использовании сервера mywebserver с сайтом, подключенным к порту 80, URL-адрес выглядит следующим образом:

Каждый сайт может содержать множество файлов и каталогов. Каждый из них образует часть URL-адреса. Так, URL-адрес статической страницы mypage.html, расположенной в каталоге myfiles, будет следующим:

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

Чтобы проверить работоспособность IIS выберите Default Web Site и в правой области диспетчера служб IIS выберите пункт «Запустить». После этого нажмите кнопку «Обзор *.80 (http)» чтобы открыть страницу сайта в браузере:

Как видите, в моем случае я поменял порт используемый по умолчанию (с 80 на 8080). Я сделал это, т.к. на 80-м у меня запущен локальный Apache-сервер. Если у вас возникает такая же проблема, то изменить порт можно щелкнув правой кнопкой мыши по сайту (Default Web Site) и выбрав в контекстном меню «Изменить привязки» (Bindings). После этого в диалоговом окне можно изменить порт, используемый по умолчанию.

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

Вопросы с тегом ‘iis-metabase’

Количество результатов: 6

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

У меня должна быть возможность отладки IIS-приложения Visual Basic 6 в 64-разрядной версии Windows 7. Не только для одной проблемы, но и для дальнейшего развития. Поп.

Я пытаюсь использовать aspnet_compiler с помощью командной строки для создания и публикации веб-приложение, которое работает на IIS7 Default Web Site. Я борюсь с поиск.

У меня есть приложение, которое я упаковываю в установщик. Я хотел бы, либо через реестр, либо написав скрипт, включить совместимость метабазы ​​IIS 6 в IIS 7. Кто-ни.

Недавно я столкнулся с какой-то мучительный время с установщиком нашего приложения не в состоянии работать из-за отсутствия доступности IIS совместимости 6,0 метабазы .

Я нашел вопрос переполнения стека, описывающий, как сделать резервную копию метабазы ​​IIS в C# вот, и я добился успеха в том, чтобы заставить это работать с использов.

Путь метабазы IIS для aspnet_compiler в IIS7

Я пытаюсь использовать aspnet_compiler через командную строку для создания и публикации веб-приложения, работающего на веб-сайте IIS7 по умолчанию. Я пытаюсь найти правильный синтаксис аргумента -m для указания пути метабазы IIS.

Вся документация относится к путям метабазы IIS6 в формате «LM / W3SVC / 1 / Root». Я наткнулся на эту информацию , которая указывает, что путь метабазы IIS7 должен выглядеть как «MACHINE / WEBROOT / APPHOST / Default Web Site».

Фактическая команда выглядит следующим образом:

Однако это приводит к следующей ошибке: ошибка 1002: «MACHINE / WEBROOT / APPHOST / Default Web Site /» не является правильно сформированным путем метабазы IIS.

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

(этот командный файл существует в подпапке папки проекта сайта)

Это приводит к следующей ошибке: ошибка ASPCONFIG: Ошибка использовать раздел, зарегистрированный как allowDefinition = ‘MachineToApplication’ за пределами уровня приложения. Эта ошибка может быть вызвана тем, что виртуальный каталог не настроен как приложение в IIS.

Asp введение в метабазу iis

Обновлен: Ноябрь 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).

metabase path in iis

I am working on creating virtual directories for a website through a programmatic way. I couldn’t get the concept of metabase- what is metabase path and need of it in IIS. thanks !

1 Answer 1

The MetaBase is IIS. It holds every configurable element of IIS and is stored in XML form, it is in the windows folder (i.e. \windows\system32\inetsrv\MetaBase.xml).

You can amend this file manually or programmatically but special care should be taken when doing so.

Managing the IIS Metabase

An Overview of the IIS Metabase

With the introduction of IIS 4, came the introduction of the metabase. IIS configuration information was no longer stored in the Registry, but in the new metabase structure. Some IIS configuration settings however still remained stored in the Registry, under the following keys:

  • HKLMSOFTWAREMicrosoftInetMgrParameters
  • HKLMSYSTEMCurrentControlSetServicesInetInfoParameters
  • HKLMSYSTEMCurrentControlSetServicesASPParameters
  • HKLMSYSTEMCurrentControlSetServicesHttpParametersLogBufferSize
  • HKLMSYSTEMCurrentControlSetServicesW3SVCParameters
  • HKLMSYSTEMCurrentControlSetServicesMSFTPSVCParameters

In IIS 4, separating the majority of IIS configuration settings into the metabase; speeded up access to the information. The issue with the metabase in IIS 4 and IIS 5 was that it was a binary file. This meant that it could not directly be modified by administrators.

With IIS 6 came the new improved metabase. The most significant enhancement to the metabase in IIS 6 is that the binary format has been discarded. In IIS 6, the metabase is formatted as a plain text file using the Extensible Markup Language (XML). This means that you can edit the metabase using a text editor such as Notepad. In addition, whether changes are made manually or programmatically to the metabase, you no longer need to stop and restart IIS. You can use the Windows Management Instrumentation (WMI) or the Active Directory Services Interface (ADSI) to make changes to the metabase. You can also copy configuration settings from one IIS machine to another IIS machine. You can copy a particular website or virtual directory, or you can copy all IIS configurations.

The new IIS 6 metabase history feature tracks changes to the metabase, and then automatically saves backups of the metabase. This enables you to revert to a previously saved version when you experience problems with current configuration settings.

The IIS 6 version of the metabase no longer consists of only one metabase file (metabase.bin) but two metabase files, namely:

  • MetaBase.xml: This XML formatted file holds the IIS configuration data.
  • MBSchema.xml: This XML formatted file holds the schema information for the MetaBase.xml file.

Both MetaBase.xml and MBSchema.xml are located under WindowsSystem32Inetsrv. Access to the files is controlled by:

  • Administrators, Full Control; and SYSTEM,Full Control

Management of the metabase functions lies with the IIS Admin service, inetinfo.exe. The responsibilities of inetinfo.exe are:

  • Metabase Storage Layer and Admin Base Objects: The Metabase Storage Layer formats the MetaBase.xml andMBSchema.xml files from disk and the converts them from XML to binary format when a Windows Server 2003 IIS machine boots. Admin Base Objects (ABO)is used to write the metabase to the IIS file cache.
  • Tracks any changes which are made to the metabase files.
  • Responsible for the metabase history feature. When changes are made to the metabase, the metabase history feature automatically saves backup copies of the metabase.
  • Responsible for the synchronization of the in-memoryversion and on disk version of the metabase files.

The following process occurs when you stop IIS via the IIS Manager:

  1. IIS first checks the in-memorymetabase to verify that all recent changes are written to disk.
  2. IIS stops if all recently madechanges have been written to disk.
  3. The in-memory metabase overwritesthe MetaBase.xml and MBSchema.xml files on disk when all recent changes have not yet been written to disk.A new history file is saved to disk for both files. Only after this, doesIIS stop.

The following process occurs when you restart IIS via the IIS Manager:

  1. The Metabase Storage Layer readsthe MetaBase.xml and MBSchema.xml files on disk.
  2. It converts both files to the binaryformat.
  3. Admin Base Objects (ABO) is usedto write the metabase to the IIS file cache.
  4. ABO also creates the in-memorymetabase nodes.

IIS automatically generates history files which are located in the WindowsSystem32InetsrvHistory folder. The history files are basically versioned copies of the metabase. A history file is generated when the flowing events occur:

  • Configuration changes are made after the in-memory metabase was already flushed to disk.
  • IIS flushes the in-memory metabase to disk.

A history file consists of the following components:

  • Copy of the in-memory MetaBase.xmlnode
  • Copy of the in-memory MBSchema.xmlnode

A history file has a major version number and a minor version number. The major version number is incremented by one when IIS flushes the in-memory metabase to disk. IIS flushes the in-memory metabase to disk when the following events occurs, thereby creating the major version number:

  • IIS is stopped using the IIS Manager or the net stop iisadmin command; or IIS is restarted using the IIS Manager.
  • IIS configuration changes are saved to disk using the All Tasks | Save Configuration To Disk option.
  • IIS automatically flushes pending in-memory metabase changes to disk.

The minor version number is incremented by one when changes have been manually made to the metabase files on disk. The minor version number is reset to zero when the MetaBase.xml and MBSchema.xml files are flushed to disk. This occurs when the major version number is incremented by one.

The history files for the two types of metabase files are called:

  • Metabase_majorversion_minorversion.xml,for the MetaBase.xml file
  • MBSchema_majorversion_minorversion.xml,for the MBSchema.xml file

Metabase Flushing

Metabase flushing is the terminology utilized to refer to the events when IIS overwrites the MetaBase.xml and MBSchema.xml files located in the System32Inetsrv folder with the in-memory metabase. This results in new history files being created in the System32InstsrvHistory folder. IIS flushes the in-memory metabase when the events listed below occur:

  • IIS is stopped using the IIS Manager or the net stop iisadmin command; or IIS is restarted using the IIS Manager.
  • IIS configuration changes are saved to disk using the All Tasks | Save Configuration To Disk option.
  • IIS automatically flushes pending in-memory metabase changes to disk.
  • IIS automatically restarts when the IIS Admin service is terminated in any abnormal manner. This would only occur if the Automatic Restart feature of IIS is enabled.
  • IIS configuration is backed up via the IIS Manager or from the command line.
  • Iiscnfg /save is utilized from the command line. Iiscnfg.vbs is a WMI script. The IIS management tasks that can be performed using Iiscnfg.vbs are:
    • Save IIS configuration to disk.
    • Copy IIS configuragtion.
    • Export and import IIS configuration.

How to edit the metabase

With IIS 6, you can use any of the following approaches to edit the metabase:

  • Stop IIS, and then manually edit the metabase. Stopping IIS would result in no users being able to accessthe IIS server.
  • Enable the new Direct MetabaseEdit feature, and then manually edit the metabase. When Direct MetabaseEdit is enabled, changes can be made to the metabase without disconnectingusers from the IIS server.

When the Direct Metabase Edit feature is enabled, you can use a text editor such as Notepad to make changes to the MetaBase.xml file. You can also programmatically change the MetaBase.xml file using scripts. When you save the changes you make to the MetaBase.xml file, IIS copies the MetaBase.xml file to the in-memory metabase. There is though a slight time lapse between when the actual changes are saved, and when it is copied to the in-memory metabase. This is due to the response time of the Windows file change notification service.

To enable the Direct Metabase Edit feature using IIS Manager,

  1. Open IIS Manager.
  2. Right-click the IIS server node in the console tree, and select Properties from the shortcut menu.
  3. When the Properties dialogbox opens, select the Enable Direct Metabase Edit checkbox.
  4. Click OK.

To enable the Direct Metabase Edit feature using the command line,

  1. Open a command prompt on the IIS server.
  2. Enter iisreset /stop to stop IIS running on the server.
  3. Use a text editor to open the MetaBase.xmlfile.
  4. To enable the Direct Metabase Edit feature, change the value of the EnableEditWhileRunning property to 1.
  5. Save this change to the MetaBase.xmlfile.
  6. Enter iisreset /start to restart IIS.

Before making changes to the metabase, whether it is manually or programmatically; it is recommended to first back up the metabase.

How to back up the metabase

IIS creates a metabase backup when it is initially installed, in the System32InetsrvMetaBack folder. IIS also creates history files as backups of the metabase. You can however manually backup the metabase as well.

To back up the metabase using IIS Manager,

  1. Right-click the IIS server whose metabase you want to back up, select All Tasks from the shortcut menu, and then select Backup/Restore Configuration.
  2. The Configuration Backup/Restoredialog box opens. The Configuration Backup/Restore dialog box displays the following information:
    • The initial configuration backups created when IIS was first installed.
    • All manually created backups.
    • All history files.
  3. Click the Create Backup button to back up the metabase.
  4. When the Configuration Backup dialog box opens, enter a name for the backup and a password for securing the backup.
  5. Click OK.
  6. The newly created backup is now listed in the Backup list box of the Configuration Backup/Restore dialogbox.
  7. All backup files are in the following folder:
    • Systemroot%System32 inetservMetaBack
      • An .md0 file extension indicates a metabase backup file
      • An .sc0 file extension indicates a metabase schema backup file

An Overview of the IIS Metabase

With the introduction of IIS 4, came the introduction of the metabase. IIS configuration information was no longer stored in the Registry, but in the new metabase structure. Some IIS configuration settings however still remained stored in the Registry, under the following keys:

  • HKLMSOFTWAREMicrosoftInetMgrParameters.
  • HKLMSYSTEMCurrentControlSetServicesInetInfoParameters.
  • HKLMSYSTEMCurrentControlSetServicesASPParameters.
  • HKLMSYSTEMCurrentControlSetServicesHttpParametersLogBufferSize.
  • HKLMSYSTEMCurrentControlSetServicesW3SVCParameters.
  • HKLMSYSTEMCurrentControlSetServicesMSFTPSVCParameters.

In IIS 4, separating the majority of IIS configuration settings into the metabase; speeded up access to the information. The issue with the metabase in IIS 4 and IIS 5 was that it was a binary file. This meant that it could not directly be modified by administrators.

With IIS 6 came the new improved metabase. The most significant enhancement to the metabase in IIS 6 is that the binary format has been discarded. In IIS 6, the metabase is formatted as a plain text file using the Extensible Markup Language (XML). This means that you can edit the metabase using a text editor such as Notepad. In addition, whether changes are made manually or programmatically to the metabase, you no longer need to stop and restart IIS. You can use the Windows Management Instrumentation (WMI) or the Active Directory Services Interface (ADSI) to make changes to the metabase. You can also copy configuration settings from one IIS machine to another IIS machine. You can copy a particular website or virtual directory, or you can copy all IIS configurations.

The new IIS 6 metabase history feature tracks changes to the metabase, and then automatically saves backups of the metabase. This enables you to revert to a previously saved version when you experience problems with current configuration settings.

The IIS 6 version of the metabase no longer consists of only one metabase file (metabase.bin) but two metabase files, namely:

  • MetaBase.xml: This XML formattedfile holds the IIS configuration data.
  • MBSchema.xml: This XML formattedfile holds the schema information for the MetaBase.xml file.

Both MetaBase.xml and MBSchema.xml are located under WindowsSystem32Inetsrv. Access to the files is controlled by:

  • Administrators, Full Control; and SYSTEM,Full Control.

Management of the metabase functions lies with the IIS Admin service, inetinfo.exe. The responsibilities of inetinfo.exe are:

  • Metabase Storage Layer and Admin Base Objects: The Metabase Storage Layer formats the MetaBase.xml andMBSchema.xml files from disk and the converts them from XML to binaryformat when a Windows Server 2003 IIS machine boots. Admin Base Objects (ABO)is used to write the metabase to the IIS file cache.
  • Tracks any changes which are made to the metabase files.
  • Responsible for the metabase history feature. When changes are made to the metabase, the metabase historyfeature automatically saves backup copies of the metabase.
  • Responsible for the synchronization of the in-memoryversion and on disk version of the metabase files.

The following process occurs when you stop IIS via the IIS Manager:

  1. IIS first checks the in-memorymetabase to verify that all recent changes are written to disk.
  2. IIS stops if all recently madechanges have been written to disk.
  3. The in-memory metabase overwritesthe MetaBase.xml and MBSchema.xml files on disk when all recent changes have not yet been written to disk.A new history file is saved to disk for both files. Only after this, doesIIS stop.

The following process occurs when you restart IIS via the IIS Manager:

  1. The Metabase Storage Layer readsthe MetaBase.xml and MBSchema.xml files on disk.
  2. It converts both files to the binaryformat.
  3. Admin Base Objects (ABO) is usedto write the metabase to the IIS file cache.
  4. ABO also creates the in-memorymetabase nodes.

IIS automatically generates history files which are located in the WindowsSystem32InetsrvHistory folder. The history files are basically versioned copies of the metabase. A history file is generated when the flowing events occur:

  • Configuration changes are madeafter the in-memory metabase was already flushed to disk.
  • IIS flushes the in-memory metabaseto disk.

A history file consists of the following components:

  • Copy of the in-memory MetaBase.xmlnode.
  • Copy of the in-memory MBSchema.xmlnode.

A history file has a major version number and a minor version number. The major version number is incremented by one when IIS flushes the in-memory metabase to disk. IIS flushes the in-memory metabase to disk when the following events occurs, thereby creating the major version number:

  • IISis stopped using the IIS Manager or the net stop iisadmin command; or IIS is restarted using the IIS Manager.
  • IIS configuration changes aresaved to disk using the All Tasks | Save Configuration To Disk option.
  • IIS automatically flushes pendingin-memory metabase changes to disk.

The minor version number is incremented by one when changes have been manually made to the metabase files on disk. The minor version number is reset to zero when the MetaBase.xml and MBSchema.xml files are flushed to disk. This occurs when the major version number is incremented by one.

The history files for the two types of metabase files are called:

  • Metabase_majorversion_minorversion.xml,for the MetaBase.xml file.
  • MBSchema_majorversion_minorversion.xml,for the MBSchema.xml file.

Metabase Flushing

Metabase flushing is the terminology utilized to refer to the events when IIS overwrites the MetaBase.xml and MBSchema.xml files located in the System32Inetsrv folder with the in-memory metabase. This results in new history files being created in the System32InstsrvHistory folder. IIS flushes the in-memory metabase when the events listed below occur:

  • IISis stopped using the IIS Manager or the net stop iisadmin command; or IIS is restarted using the IIS Manager.
  • IIS configuration changes aresaved to disk using the All Tasks | Save Configuration To Disk option.
  • IIS automatically flushes pendingin-memory metabase changes to disk.
  • IIS automatically restarts whenthe IIS Admin service is terminated in any abnormal manner. This wouldonly occur if the Automatic Restart feature of IIS is enabled.
  • IIS configuration is backed up viathe IIS Manager or from the command line.
  • Iiscnfg /save is utilized from thecommand line. Iiscnfg.vbs is a WMI script. The IIS management tasks thatcan be performed using Iiscnfg.vbs are:
    • Save IIS configuration to disk.
    • Copy IIS configuragtion
    • Export and import IIS configuration

How to edit the metabase

With IIS 6, you can use any of the following approaches to edit the metabase:

  • Stop IIS, and then manually editthe metabase. Stopping IIS would result in no users being able to accessthe IIS server.
  • Enable the new Direct MetabaseEdit feature, and then manually edit the metabase. When Direct MetabaseEdit is enabled, changes can be made to the metabase without disconnectingusers from the IIS server.

When the Direct Metabase Edit feature is enabled, you can use a text editor such as Notepad to make changes to the MetaBase.xml file. You can also programmatically change the MetaBase.xml file using sripts. When you save the changes you make to the MetaBase.xml file, IIS copies the MetaBase.xml file to the in-memory metabase. There is though a slight time lapse between when the actual changes are saved, and when it is copied to the in-memory metabase. This is due to the response time of the Windows file change notification service.

To enable the Direct Metabase Edit feature using IIS Manager,

  1. Open IIS Manager.
  2. Right-click the IIS server node inthe console tree, and select Properties from the shortcut menu.
  3. When the Properties dialog boxopens, select the Enable Direct Metabase Edit checkbox.
  4. Click OK.

To enable the Direct Metabase Edit feature using the command line,

  1. Open a command prompt on the IIS server.
  2. Enter iisreset /stop to stop IIS running on the server.
  3. Use a text editor to open the MetaBase.xmlfile.
  4. To enable the Direct Metabase Editfeature, change the value of the EnableEditWhileRunning property to 1.
  5. Save this change to the MetaBase.xmlfile.
  6. Enter iisreset /start to restart IIS.

Before making changes to the metabase, whether it is manually or programmatically; it is recommended to first back up the metabase.

How to back up the metabase

IIS creates a metabase backup when it is initially installed, in the System32InetsrvMetaBack folder. IIS also creates history files as backups of the metabase. You can however manually backup the metabase as well.

To back up the metabase using IIS Manager,

  1. Right-click the IIS server whosemetabase you want to back up, select All Tasks from the shortcut menu, andthen select Backup/Restore Configuration.
  2. The Configuration Backup/Restoredialog box opens. The Configuration Backup/Restore dialog box displays thefollowing information:
    • The initial configuration backups created when IIS was first installed.
    • All manually created backups.
    • All history files.
  3. Click the Create Backup button toback up the metabase.
  4. When the Configuration Backupdialog box opens, enter a name for the backup and a password for securingthe backup.
  5. Click OK.
  6. The newly created backup is nowlisted in the Backup list box of the Configuration Backup/Restore dialogbox.
  7. All backup files are in thefollowing folder:
    • Systemroot%System32 inetservMetaBack
      • An .md0 file extension indicates a metabase backup file.
      • An .sc0 file extension indicates a metabase schema backup file.

To restart IIS using the IIS Manager,

  1. Right-click the IIS server, selectAll Tasks on the shortcut menu, and then click Restart IIS.
  2. You can choose between thefollowing options:
    • Restart IIS.
    • Restart Server.
    • Stop IIS.
    • Start IIS.

You can use the Iisback.vbs WMI script to perform the management tasks listed below:

  • Back up and restore IISconfiguration data.
  • Delete IIS configuration data.
  • View, or list IIS configurationdata.

How to export the metabase

You can export portions of the metabase, or the entire metabase configuration information to a file. You can basically export the configuration settings for only a particular website or virtual directory, or you can export all configuration settings. You can also through exporting, create a metabase template file to copy configuration information to multiple IIS machines. You can export metabase configuration information by using the IIS Manager, or the Iiscnfg.vbs WMI script.

To export the metabase using the IIS Manager,

  1. Open the IIS Manager.
  2. Right-click the IIS server whoseconfiguration setting you want o export, select All Tasks on the shortcutmenu, and then click Save Configuration To A File.
  3. When the Save Configuration To AFile dialog box opens, enter a name for the file in the File Name textbox.
  4. Verify that the correct locationis specified in the Path checkbox.
  5. Select the Encrypt ConfigurationUsing Password checkbox.
  6. Click OK.

How to import the metabase

You can import previously exported files to the same IIS machine, or to a different IIS machine.

To import a previously exported file to the same IIS machine,

  1. Open the IIS Manager.
  2. Right-click the Web Sites node andselect New, and then Web Site (From File) from the shortcut menu.
  3. The Import Configuration dialogbox opens
  4. Click Browse to select the exportfile which you want to import.
  5. Click Read to display the configurationin the Location list box
  6. Select the site and click OK.
  7. Enter the password that was usedto encrypt the file when it was exported.
  8. Click OK.

In order to import a previously exported file from one IIS machine to a different IIS machine, the following preparation tasks need to be performed.

  • Delete or edit any referenceswithin the export file that are machine specific, such as
    • Deleting AdminACL properties, password properties and properties referencing IUSR or IWAM accounts.
    • Editing file system paths or locations which are different on the target machine.
  • Create the required folders on thetarget machine.
  1. Right-click the IIS server, select All Tasks on the shortcut menu, and then click Restart IIS.
  2. You can choose between the following options:
    • Restart IIS.
    • Restart Server.
    • Stop IIS.
    • Start IIS.

You can use the Iisback.vbs WMI script to perform the management tasks listed below:

  • Back up and restore IISconfiguration data.
  • Delete IIS configuration data.
  • View, or list IIS configurationdata.

How to export the metabase

You can export portions of the metabase, or the entire metabase configuration information to a file. You can basically export the configuration settings for only a particular website or virtual directory, or you can export all configuration settings. You can also through exporting, create a metabase template file to copy configuration information to multiple IIS machines. You can export metabase configuration information by using the IIS Manager, or the Iiscnfg.vbs WMI script.

To export the metabase using the IIS Manager,

  1. Open the IIS Manager.
  2. Right-click the IIS server whoseconfiguration setting you want o export, select All Tasks on the shortcut menu, and then click Save Configuration To A File.
  3. When the Save Configuration To A File dialog box opens, enter a name for the file in the File Name textbox.
  4. Verify that the correct locationis specified in the Path checkbox.
  5. Select the Encrypt Configuration Using Password checkbox.
  6. Click OK.

How to import the metabase

You can import previously exported files to the same IIS machine, or to a different IIS machine.

To import a previously exported file to the same IIS machine,

  1. Open the IIS Manager.
  2. Right-click the Web Sites node and select New, and then Web Site (From File) from the shortcut menu.
  3. The Import Configuration dialogbox opens.
  4. Click Browse to select the export file which you want to import.
  5. Click Read to display the configuration in the Location list box.
  6. Select the site and click OK
  7. Enter the password that was used to encrypt the file when it was exported.
  8. Click OK.

In order to import a previously exported file from one IIS machine to a different IIS machine, the following preparation tasks need to be performed.

  • Delete or edit any references within the export file that are machine specific, such as
    • Deleting AdminACL properties, password properties and properties referencing IUSR or IWAM accounts.
    • Editing file system paths or locations which are different on the target machine.
  • Create the required folders on the target machine.

ArcGIS Enterprise

В этом разделе

Для ArcGIS Web Adaptor необходимо включение IIS и определенных компонентов IIS в Windows 7. Установка не будет продолжена, если IIS не обнаружен или не включены его отдельные компоненты.

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

Более подробно о том, как включить IIS и обязательные компоненты IIS в Windows 7, описано ниже.

Выберите Панель управления (Control Panel) > Программы и компоненты (Programs and Features) > Включение или отключение компонентов Windows (Turn Windows Features on or off) .

Разверните узел Службы IIS .

Убедитесь, что компоненты IIS, перечисленные ниже, включены. Если эти компоненты не активированы, программа установки завершит работу.

Обязательные компоненты IIS

Компоненты IIS, указанные ниже, соответствуют минимальным требованиям для запуска Web Adaptor. Если установлены другие компоненты IIS, их не нужно удалять.

  • Средства управления веб-сайтом (Web Management Tools)
    • Совместимость функций управления IIS 6
      • Совместимость конфигурации метабазы IIS и IIS 6
    • Консоль управления IIS
    • IIS скрипты и инструменты управления
    • Служба управления IIS (IIS Management Service)

    Интернет веб-сервисы

      Компоненты разработки приложений
    • .NET расширяемость
    • ASP.NET
    • Дополнительные модули ISAPI
    • Фильтры ISAPI
  • Общие HTTP-компоненты
    • Документ по умолчанию
    • Статическое содержание
  • Безопасность
    • Базовая аутентификация
    • Фильтрация запросов
    • Аутентификация Windows

Иллюстрированный самоучитель по Microsoft Windows 2003

Расширение возможностей служб IIS, предоставляемых разработчику и администратору

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

Следует заметить, что ASP.NET не поддерживается 64-разрядными версиями Windows Server 2003.

Помимо ASP.NET, в рамках IIS 6.0 реализована поддержка таких набирающих популярность интернет-стандартов, как XML и SOAP. Разработчики могут использовать серверные сценарии для динамической публикации содержимого веб-сайтов. Для написания серверных сценариев разработчики могут использовать технологии ASP или CGI.

Расширение возможностей служб IIS, предоставляемых администратору

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

Перечень функциональных улучшений приведен в табл. 16.5.

Таблица 16.5. Функциональные возможности, расширяющие возможности администрирования IIS.

Как работают Web сервисы ASP.NET

Введение

Сегодня существует два фундаментально различных способа реализации Web сервисов, основанных на HTTP, в Microsoft® .NET. Первой и наиболее низкоуровневой техникой является написание специального класса IHttpHandler, который вставляется в цепочку .NET HTTP pipeline. Этот подход требует использования System.Web API для обработки входящих HTTP сообщений и System.Xml API для обработки конверта SOAP, находящегося в теле HTTP. При написании специального обработчика также требуется создать вручную документ WSDL, который точно описывает вашу реализацию. Чтобы сделать все это правильно, необходимо глубокое понимание спецификаций XML, XSD, SOAP и WSDL, что является для большинства устрашающим условием.

Более продуктивным способом реализовать Web сервисы является использование WebMethods оболочки Microsoft ASP.NET. С ASP.NET поставляется специальный класс IHttpHandler для .asmx (называемых WebServiceHandler), который обеспечивает набор необходимых вам функциональных возможностей XML, XSD, SOAP и WSDL. И, поскольку WebMethods оболочка защищает вас от сложностей, лежащих в основе XML технологий, вы можете быстро сосредоточиться на существующих проблемах бизнес логики.

Рисунок 1. Соотношение выгод и потерь между гибкостью и продуктивностью

Выбор между техниками реализации приводит к общему сравнению выгод и потерь между гибкостью и продуктивностью, как показано на Рисунке 1. Создание специального IHttpHandler дает вам неограниченную гибкость, но также требует большего времени на написание, тестирование и отладку кода. Оболочка WebMethods облегчает организацию вашего Web сервиса и быстроту разработки, но вы явно ограничены рамками оболочки. Однако в случаях, когда оболочка WebMethods не обеспечивает именно того, что вам надо, есть возможность расширить ее, добавляя собственные дополнительные функциональные возможности.

В общем, пока вы не освоили XML, XSD, SOAP и WSDL и не хотите утруждаться, работая с ними напрямую, лучше продолжайте работать с оболочкой WebMethods. Она поставляет основные сервисы, которые необходимы большинству конечных Web сервисов, а также некоторые интересные возможности расширения, которые позволяют привести оболочку в соответствие вашим конкретным надобностям. Исходя из этого, далее в статье обсуждаются внутренние механизмы работы WebMethods. Если вы новичок в XML Schema и SOAP, перед тем как продолжить прочитайте Understanding XML Schema ( http://msdn.microsoft.com/webservices/building/frameworkandstudio/default.aspx?pull=/library/en-us/dnxml/html/understandxsd.asp ) и Understanding SOAP ( http://msdn.microsoft.com/webservices/building/frameworkandstudio/default.aspx?pull=/library/en-us/dnsoap/html/understandsoap.asp ).
Оболочка WebMethods

Оболочка WebMethods занимается преобразованиями SOAP сообщений в методы класса .NET. Это делается, прежде всего, путем аннотирования ваших методов атрибутом [WebMethod], находящемся в пространстве имен System.Web.Services. Например, следующий класс .NET содержит четыре метода, два из которых аннотированы атрибутом [WebMethod]:

Чтобы использовать этот класс с оболочкой WebMethods, вам надо компилировать его в сборку и скопировать в виртуальную директорию директории bin. В этом примере методы Add и Subtract затем могут быть раскрыты как операции Web сервиса, в то время как с методами Multiply и Divide этого сделать нельзя (т.к. они не были отмечены атрибутом [WebMethod]).

Вы раскрываете Add и Subtract как операции Web сервиса через .asmx файл. Чтобы сделать это, создайте новый текстовый файл Math.asmx, содержащий следующее простое описание, и поместите его в ту же виртуальную директорию, которая содержит и сборку (обратите внимание: файл помещается в саму виртуальную директорию, а не в ее дочернюю директорию bin):

Это описание указывает обработчику .asmx, какой класс использовать для WebMethods, а обработчик чудесным образом заботится обо всем остальном. Например, предположим, виртуальная директория называется ‘math’ и содержит Math.asmx наряду с тем, что дочерняя директория bin содержит сборку, вызов http://localhost/math/math.asmx приводит к тому, что обработчик .asmx генерирует страницу документации, показанную на Рисунке 2 (см. далее).

Это один из основных вариантов работы обработчика .asmx. Файл .asmx обычно содержит только описание WebService, которое ссылается на класс Web сервиса по имени (как в примере, показанном ниже). Следовательно, в этом случае, сборка должна уже быть скомпилирована и размещена в директории bin виртуальной директории. Обработчик .asmx также обеспечивает JIT компиляцию исходного кода, находящегося в файле .asmx. Например, следующий файл (названный Mathjit.asmx) содержит описание WebService вместе с исходным кодом класса, на который ссылается.

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

Рисунок 2. Документация MathService

При создании нового проекта Web сервиса в Visual Studio® .NET вы всегда используете технику “двух файлов”, когда исходный файл класса отделен от файла .asmx, который на него ссылается. Интегрированная среда разработки (IDE) хорошо скрывает это от вас, но если вы нажмете Show All Files на панели инструментов Solution Explorer, вы увидите в проекте по два файла для каждого класса Web сервиса. Кстати, Visual Studio .NET не поддерживает для файлов .asmx синтаксическое выделение или IntelliSense®, поэтому вы сами решаете, следовать ли в этом направлении. В Web проектах Visual Studio .NET также заботится о создании виртуальной директории и автоматическом компилировании сборки в директорию bin виртуальной директории.

Перед погружением в детали работы обработчика .asmx давайте коротко обсудим, как обрабатываются сообщения от Internet Information Server (IIS), прежде всего, в обработчике .asmx. Когда входящее HTTP сообщение достигает порта 80, для того, чтобы определить, какая ISAPI DLL должна использоваться для его обработки, IIS использует информацию метабазы IIS. Инсталляция .NET связывает расширения .asmx с Aspnet_isapi.dll, как показано на Рисунке 3.

Рисунок 3. Связываение IIS и .asmx

Aspnet_isapi.dll – это стандартное расширение ISAPI, поставляемое .NET Framework, которое просто направляет HTTP запросы в отдельный рабочий процесс, называемый Aspnet_wp.exe. Aspnet_wp.exe выполняет роль хоста для общеязыковой среды выполнения и .NET HTTP pipeline. Как только сообщение входит в .NET HTTP pipeline, pipeline просматривает в файле конфигурации, какой класс IHttpHandler надо использовать для данного расширения. Если вы посмотрите свой файл Machine.config, то увидите, что он содержит httpHandler, связанный с расширением .asmx, как показано здесь:

Итак, когда сообщение поступает в .NET HTTP pipeline, нацеливаясь на файл .asmx, pipeline заходит в класс WebServiceHandlerFactory, чтобы создать новый объект WebServiceHandler, который может использоваться для обработки запроса (с помощью метода IHttpHandlerProcessRequest). Затем объект WebServiceHandler открывает физический файл .asmx, чтобы определить имя класса, содержащего ваш WebMethods. Более подробная информация о работе .NET HTTP pipeline представлена в HTTP Pipelines: Securely Implement Request Processing, Filtering, and Content Redirection with HTTP Pipelines in ASP.NET (http://msdn.microsoft.com/library/default.asp?url=/msdnmag/issues/02/09/HTTPPipelines/default.aspx).

Сразу после того, как .NET HTTP pipeline вызывает обработчик .asmx, чудесным образом начинается обработка XML, XSD, SOAP и WSDL. Остальные функциональные возможности, предоставляемые обработчиком .asmx, могут быть разделены на три основные группы: 1) координирование сообщений, 2) преобразование XML в объекты и 3) автоматическое генерирование WSDL и документации. Давайте каждую из этих групп рассмотрим более детально.
Диспечеризация сообщений

Когда HTTP pipeline вызывает обработчик .asmx, просматривая описание WebService в файле .asmx, он определяет, какой класс .NET использовать. Затем он просматривает поступившее HTTP сообщение, чтобы определить, какой именно метод вызывать в данном классе. Чтобы вызвать операцию Add, показанную в предыдущих примерах, входящее HTTP сообщение должно выглядеть примерно так:

На самом деле во входящем HTTP сообщении есть два участка, которые могут использоваться для определения метода, который должен быть вызван в классе: заголовок SOAPAction или имя запрашиваемого элемента (т.е. имя элемента в пределах элемента soap:Body). В этом случае хотя бы один из них определяет имя метода, который хочет вызвать отправитель.

Для диспечеризации сообщения обработчик .asmx по умолчанию использует заголовок SOAPAction. Значит, обработчик .asmx смотрит на заголовок SOAPAction в сообщении, а затем, используя .NET рефлексию, проверяет методы класса. Он рассматривает только методы, помеченные атрибутом [WebMethod], но, просматривая значение SOAPAction каждого метода, он точно определяет, какой метод вызывать. Поскольку мы явно не определили значение SOAPAction в методах нашего класса, обработчик .asmx принимает, что значением SOAPAction будет сочетание пространства имен Web сервиса и имени метода. Поскольку мы также не определили и пространство имен, обработчик по умолчанию присваивает http://tempuri.org. Таким образом, значение по умолчанию SOAPAction для метода Add будет http://tempuri.org/Add.

Вы можете изменить пространство имен Web сервиса, помечая класс атрибутом [WebService], так же как и точное значение SOAPAction, помечая WebMethods атрибутом [SoapDocumentMethod], как показано далее:

Теперь обработчик .asmx ожидает, что значение SOAPAction для метода Add будет http://example.org/math/Add и urn:math:subtract для метода Subtract (поскольку мы явно задали это значение). Например, следующее сообщение HTTP запроса вызывает операцию Subtract:

Если обработчик .asmx не находит SOAPAction, подходящего для входящего HTTP сообщения, он просто формирует исключительную ситуацию (позже рассмотрим, как обрабатываются исключительные ситуации). Если для диспечерезации метода вы не используете заголовок SOAPAction, помечая класс свойством RoutingStyle атрибута [SoapDocumentService], вы можете указать обработчику .asmx использовать имя элемента запроса. Если вы делаете это, то также надо указать, что WebMethods не нуждаются в значении SOAPAction, путем установления их значений в пустую строку, как показано ниже:

В этом случае обработчик даже не рассматривает значение SOAPAction – он использует вместо него имя элемента запроса. Например, ожидается ,что имя элемента запроса для метода Add будет Add (из пространства имен http://example.org/math), как показано в этом сообщении HTTP запроса:

Значит, первое, что делает обработчик .asmx при получении входящего HTTP сообщения, – он определяет, как перенаправить сообщение в соответствующий WebMethod. Однако до того как он действительно сможет вызвать метод, он должен преобразовать входящий XML в .NET объекты.
Преобразование XML в объекты

Как только обработчик WebMehod определил, какой метод надо вызвать, он должен десериализовать XML сообщение в .NET объекты, которые могут быть предоставлены во время вызова метода. Так же как и при диспечеризации сообщения, обработчик проверяет класс с помощью рефлексии, чтобы выяснить, как обрабатывать входящее XML сообщение. Класс XmlSerializer осуществляет автоматическое преобразование между XML и объектами в пространстве имен System.Xml.Serialization.

XmlSerializer делает возможным преобразование любого public типа .NET в тип XML Schema и, вместе с тем, может проводить автоматические преобразования между .NET объектами и документами XML (см. Рисунок 4). XmlSerializer ограничен теми возможностями, которые сегодня поддерживает XML Schema, поэтому он не может работать со всеми сложностями сегодняшних объектных моделей, такими как комплексные не древовидные диаграммы объектов, дублирующие указатели и т.д. Несмотря на это, XmlSerializer может работать с большинством комплексных типов, используемых разработчиками.

Для приведенного выше примера Add XmlSerializer преобразует элементы x и y в .NET double значение, которые затем смогут предоставляться при вызове Add. Метод Add возвращает вызывающему значение типа double, которое затем должно быть опять сериализовано в XML элемент в рамках SOAP ответа.

Рисунок 4. Преобразование XML в объекты

Также XmlSerializer может автоматически работать с комплексными типами (за исключением описанных выше ограничений). Например, следующий WebMethod вычисляет расстояние между двумя структурами Point:

SOAP сообщение запроса для этой операции будет содержать элемент Distance, который включает два дочерних элемента, orig и dest, и каждый из этих элементов должен содержать дочерние x и y элементы:

В этом случае SOAP сообщение ответа будет содержать элемент DistanceResponse, включающий элемент DistanceResult типа double:

Применяемое по умолчанию XML преобразование использует имя метода в качестве имени элемента запроса и имена параметров в качестве имен дочерних элементов. Структура каждого параметра зависит от структуры типа. Имена public полей и свойств просто преобразовываются в дочерние элементы, как в случае x и y (в Point). Именем элемента ответа по умолчанию становится имя элемента запроса, оканчивающееся словом «Response». Элемент ответа также содержит дочерние элементы, названные так же как и элементы запроса, только оканчивающиеся словом «Result».

Есть возможность освободиться от стандартного XML преобразования путем использования большого количества встроенных атрибутов преобразования. Например, для преобразования имени типа и пространства имен можно использовать атрибут [XmlType]. Чтобы контролировать то, как параметры или члены класса преобразовывают элементы или атрибуты, вы можете пользоваться атрибутами [XmlElement] и [XmlAttribute], соответственно. А для контроля за тем, как сам метод преобразовывается в имена элементов в сообщениях запроса/ответа, можно воспользоваться атрибутом [SoapDocumentMethod]. Например, ознакомьтесь со следующей версией Distance, в которой используются различные атрибуты:

В этой версии Distance ожидается, что входящее SOAP сообщение будет выглядеть следующим образом:

И будет сгенерировано такое SOAP сообщение ответа:

Для реализации и определения приведенного выше преобразования, применяемого по умолчанию, обработчик .asmx использует документ/литерал стиль SOAP. Это означает, что описание WSDL будет содержать буквенные определения XML schema, описывающие и элементы запроса, и элементы ответа, используемые в SOAP сообщениях (т.е. правила SOAP кодирования не используются).

Обработчик .asmx также делает возможным использование rpc/литерал стиля SOAP. Это означает, что SOAP Body содержит XML представление вызова RPC и параметры сериализовываются с использованием правил SOAP кодирования (т.е. XML Schema не нужна). Соответственно, вместо атрибутов [SoapDocumentService] и [SoapDocumentMethod] вы используете [SoapRpcService] и [SoapRpcMethod]. Более подробно о различиях в этих стилях см. в разделе MSDN Understanding SOAP (http://msdn.microsoft.com/webservices/building/frameworkandstudio/default.aspx?pull=/library/en-us/dnsoap/html/understandsoap.asp).

Как видите, есть возможность полностью изменить процесс преобразования данного метода в SOAP сообщение. XmlSerializer обеспечивает мощный механизм сериализации со многими возможностями, о которых у нас нет времени здесь говорить. Более подробно о том, как работает XmlSerializer, см. в разделе MSDN Moving to .NET and Web Services (http://msdn.microsoft.com/library/default.asp?url=/msdnmag/issues/01/11/webserv/). Я также рассмотрел многие нюансы XmlSerializer, не раскрытые в моей ежемесячной колонке MSDN Magazine, XML Files (http://msdn.microsoft.com/msdnmag/find/default.aspx?type=Ti&phrase=XML%20Files) (смотрите список колонок в online архивах).

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

Если, все-таки, вы хотите использовать информацию заголовка из WebMethod, вы должны предоставить класс .NET, наследуемый от SoapHeader, который представляет XML Schema заголовков (следуя рекомендациям преобразования, приведенным выше). Затем вы определяете переменную члена этого типа, выполняющую роль «заполнителя» для экземпляров заголовка. И наконец, вы помечаете каждый WebMethod, нуждающийся в доступе к заголовку, определяя имя того поля, куда вы хотите его направить.

Например, SOAP запрос, содержащий заголовок UsernameToken с целью аутентификации:

Чтобы сделать возможной для обработчика .asmx десериализацию заголовка, сначала надо определить класс .NET, представляющий предполагаемый тип XML Schema (обратите внимание: если у вас на самом деле есть XML Schema для заголовка, вы можете генерировать класс, используя xsd.exe /c). В этом случае соответствующий класс выглядит следующим образом:

Затем просто надо определить переменную члена в вашем классе WebMethod, чтобы хранить экземпляр класса заголовка , и аннотировать WebMethods атрибутом [SoapHeader], как показано ниже:

Затем в WebMethod вы можете обратиться к полю Token и извлечь информацию, которая была предоставлена заголовком. Вы также можете отправить заголовки обратно клиенту, используя ту же технику – вам просто надо определить направление заголовка в описании атрибута [SoapHeader]. Более подробную информацию об обработке SOAP заголовков в оболочке WebMethods см. в разделе MSDN Digging into SOAP Headers with the .NET Framework. (http://msdn.microsoft.com/webservices/building/frameworkandstudio/default.aspx?pull=/library/en-us/dnservice/html/service06182002.asp)

Обработчик .asmx также обеспечивает автоматическую сериализацию исключительных ситуаций .NET. Любая необработанная исключительная ситуация,перехваченная обработчиком .asmx, автоматически сериализуется в элемент SOAP Fault в ответе. Например, в предыдущем примере, если имя пользователя не совпадает с паролем, наш код формирует исключительную ситуацию .NET. Тогда обработчик .asmx обработает ее и сериализует в SOAP ответ, как показано ниже:

Если вы хотите еще больше контролировать элемент SOAP Fault, вы можете также явно сформировать объект SoapException, определяя все детали элемента SOAP Fault, такие как элементы faultcode, faulstring, faultactor и detail. Более подробная информации представлена в разделе MSDN Using SOAP Faults (http://msdn.microsoft.com/webservices/building/frameworkandstudio/default.aspx?pull=/library/en-us/dnservice/html/service09172002.asp).

Как видите, чтобы понять, как работает WebMethods, необходимо еще разобраться с механизмом, лежащим в основе сериализации, и всем многообразием его возможностей. Преимуществом механизма сериализации является то, что он скрывает весь лежащий в основе XML API код, который обычно вам приходится писать в специальном обработчике. Однако, в то время как большинство разработчиков считают это положительным моментом, некоторые называют это недостатком, потому что все еще хотят самостоятельно работать с SOAP сообщением в пределах реализации WebMethod. Более детально о том, как использовать такой смешанный подход, см. в разделе MSDN Accessing Raw SOAP Messages in ASP.NET Web Services (http://msdn.microsoft.com/library/default.asp?url=/msdnmag/issues/03/03/WebServices/default.aspx).
Автоматическое генерирование WSDL

Клиентам надо точно знать, как должно выглядеть SOAP сообщение, чтобы успешно работать с ним. Общепринятым является предоставлять описания Web сервиса через WSDL (и встроенные XSD определения). Для этого обработчик .asmx автоматически генерирует и страницу документации, и описание WSDL, которое точно отражает интерфейс WebMethod. Если вы применили группу атрибутов преобразования к вашим WebMethods, все они будут отражены в сгенерированной документации.

Если вы посмотрите файл .asmx, то найдете страницу документации, такую как показано на Рисунке 2. Эта страница документации генерируется страницей .aspx, называемой DefaultWsdlHelpGenerator.aspx (находящейся в C:windowsMicrosoft.NETFramework v1.0.3705config). Если откроете файл, вы увидите, что это всего лишь стандартная страница ASP.NET, которая использует .NET рефлексию для генерирования документации. Эта возможность позволяет документации всегда соответствовать коду. Просто модифицируя этот файл, вы можете изменять генерируемую документацию.

Также можно блокировать генерирование документации на основе виртуальной директории, определяя другой файл документации в файле Web.config:

Если клиент завершает запрос GET для .asmx символами «?wsdl» в строке запроса, обработчик .asmx вместо документации генерирует описание WSDL. Клиенты могут использовать описание WSDL для генерирования proxy классов, которые автоматически знают, как общаться с Web сервисом (т.е. используя Wsdl.exe в .NET).

Чтобы изменить процесс генерирования WSDL, вы можете написать класс SoapExtensionReflector и зарегистрировать его с оболочкой WebMethods в файле Web.config. Затем, когда обработчик .asmx будет генерировать описание WSDL, он вызовет ваш класс и даст вам возможность изменить окончательное описание, поставляемое клиенту. Более подробно о том, как писать классы SoapExtensionReflector, см. в разделе MSDN SoapExtensionReflectors in ASP.NET Web Services (http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20030320WebServicesMP/manifest.xml).

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

Немного более автоматизированной техникой является использование атрибута [WebServicesBinding] для определения местоположения статического документа WSDL в виртуальной директории, которую реализовывает класс WebMethod. Вы также должны определить имя WSDL binding, которое реализовывает каждый WebMethod, используя атрибут [SoapDocumentMethod]. Процесс автоматического генерирования WSDL импортирует ваш статический WSDL файл и «завернет» его в новое описание сервиса. Более подробная информация по этой технике представлена в статье MSDN Place XML Message Design Ahead of Schema Planning to Improve Web Service Interoperability (http://msdn.microsoft.com/library/default.asp?url=/msdnmag/issues/02/12/WebServicesDesign/).

Сегодня очень тяжело вручную создавать WSDL, потому что до сих пор нет достаточного количества доступных редакторов WSDL. Поэтому автоматическое генерирование документации/ WSDL является ценной частью оболочки WebMethods, которая облегчит жизнь многим разработчикам.
Заключение

Проф. В.К.Толстых, www.tolstykh.com Технологии разработки Internet- приложений Архитектура IIS 5, IIS 6, исполняющая среда ASP.NET в IIS 7, конфигурирование. — презентация

Презентация была опубликована 6 лет назад пользователемАлександр Вербицкий

Похожие презентации

Презентация на тему: » Проф. В.К.Толстых, www.tolstykh.com Технологии разработки Internet- приложений Архитектура IIS 5, IIS 6, исполняющая среда ASP.NET в IIS 7, конфигурирование.» — Транскрипт:

1 проф. В.К.Толстых, Технологии разработки Internet- приложений Архитектура IIS 5, IIS 6, исполняющая среда ASP.NET в IIS 7, конфигурирование IIS 7 исполняющая среда ASP.NET в IIS 7, конфигурирование IIS 7 исполняющая среда ASP.NET в IIS 7, конфигурирование IIS 7 Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета

2 Модель адреса в IIS В IIS была введена общая модель адреса: Узлы – объединяют Web-ресурсы для администрирования, т.е. – сайты. Привязаны к сетевому адресу и порту, например, Приложения – расширения сервера с уникальными именами, посредством которых можно управлять приложениями (размещать в пуле, запускать, останавливать…). В каждом узле м. б. несколько приложений, например, Виртуальные каталоги – папки, отображаемые на сетевое пространство узлов IIS, находящиеся в каких-нибудь местах файловой системы. Каждый виртуальный каталог связывается с одним приложением.

3 Возможности базовых служб IIS IIS 5 : 1.Web, FTP, SMTP, NNTP – процесс Inetinfo.exe. 2.вне процесса IIS (изолированные процессы) – Dllhost.exe – наивысшая защита IIS 5 от Web-приложений. IIS 6 : 1.Web-служба – Svchost.exe запускает и контролирует рабочие процессы (РП – w3wp.exe ). Каждая копия РП работает с заданным для него пулом приложений (группа приложений, обрабатываемых одним РП). По умолчанию все приложения объединяются в пуле DefaultAppPool. РП обслуживает любые приложения Web-сервера и запускается при получении сетевого запроса от драйвера ядра операционной системы http.sys. Идея пулов позволяет IIS размещать на одном сервере тысячи разнообразных приложений, не держа тысячи РП заранее запущенными. РП каждого пула не может получить доступ к приложениям другого пула. Каждая копия РП занимает в ОЗУ 5 Мбайт. 2.Службы FTP, SMTP, NNTP – Inetinfo.exe (в режиме IIS 5), также управляет метабазой IIS Web-сад – это пул с несколькими рабочими процессами. http.sys распределяет запросы в саду (между копиями РП в пуле), если один рабочий процесс замедляется (например, длительный запрос к серверу баз данных или запрос к внешним службам), прием и обработка запросов продолжается остальными рабочими процессами. Рабочие процессы на многопроцессорных компьютерах можно привязать к конкретным процессорам и распараллеливать вычисления. IIS 7 IIS 7 : Модульная архитектуры на основе IIS 6 (нужные ASP.NET-модули выбираются или создаются и встраиваются в конвейер обработки запросов). Усилена безопасность (отдельные пулы для сайтов, олицетворение…). Поддерживаются дополнительные, не только HTTP, протоколы транспорта посредством WAS (Windows process Activation Service).

4 AppDomain 2 Исполняющая среда ASP.NET в IIS 5 IIS 5 — Inetinfo.exe, DLLHost.exe Расширение ISAPI aspnet_isapi.dll Расширение ISAPI asp.dll ASP ASP.NET Рабочий процесс aspnet_wp.exe Ответ HTML Конвейер HTTP Ответ HTML … Домены приложений — AppDomain Рабочий процесс (РП) обслуживает любые приложения, которые могут выполняться на данном Web-сервере при первом обращении к приложению создаёт домен приложения AppDomain (виртуальный каталог приложения с его.dll- сборками), среда aspnet_isapi.dll загружает туда все сборки и передаёт управление HTTP-конвейеру, генерирующему выходной HTML-поток. HTML Ответ HTML Браузер (запрос HTTP) AppDomain 1 Конвейер HTTP Ответ HTML

5 CLR AppDomain Конвейер HTTP HTML Исполняющая среда ASP.NET в IIS 6 Драйвер http.sys (стек протокола HTTP) Расширение ISAPI aspnet_isapi.dll Ответ HTML Приложения каждого пула изолированы друг от друга. Получив запрос от http.sys, расширение aspnet_isapi.dll загружает РП в заданном пуле (очередной РП или несколько РП если это Web-сад), который активирует CLR, создаёт домен приложения AppDomain с HTTP-конвейером, где размещаются.dll сборки приложения. Ответ HTML Расширение ISAPI asp.dll Inetinfo.exe — IIS admin Service (читает кол-во зарегистрированных пулов, метабазу и даёт указания http.sys о создании соответствующих пулов) Метабаза XML (БД настроек IIS) ASP.NET Браузер (запрос HTTP) … Пул приложений (Web-сад с несколькими РП) Рабочий процесс w3wp.exe Рабочий процесс w3wp.exe Сборки.dll … Уровень режима ядра ОС Драйвер помещает в очередь и разбирает HTTP-запросы, а также кэширует и возвращает HTML-ответы. Уровень пользовательского режима Svchost.exe – ядро сервера (Настройка http.sys, запуск РП, контроль работоспособности…) ASP

6 Фильтры ISAPI (Internet Server Application Programming Interface) Фильтры представляют собой тип приложения ISAPI, вызываемый при каждом запросе IIS, поэтому они отвечают на события внутри IIS. ISAPI-фильтры (каждый – в отдельной *.dll) не могут самостоятельно выполняться подобно ISAPI-расширениям. Фильтры загружаются при запуске IIS, согласно данным метабазы. HTTP-транзакция между браузером клиента и IIS вызывает несколько серверных событий. При возникновении события, для которого зарегистрирован ISAPI-фильтр, входной или выходной HTTP-поток передаётся на этот фильтр. Фильтры анализируют и при необходимости вносят свои коррективы в текст HTTP- потока и возвращают его обратно IIS. Фильтры работают в одном адресном пространстве с IIS, что обеспечивает им высокую скорость работы. Они могут устанавливаться как для всего IIS, так и для отдельных его сайтов. Возможность анализировать и при необходимости модифицировать входящие и исходящие потоки данных делает фильтры ISAPI очень гибким и мощным механизмом. Однако, при неумелом программировании они могут существенно снизить производительность IIS. Фильтры, обычно, используют для: 1.аутентификации клиентов 2.анализа и протоколирование запросов на основе заголовков HTTP 3.перенаправления запросов на основе заголовков HTTP 4.шифрования

Илон Маск рекомендует:  Как сделать оглавление в Word. Виды заголовков
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Примечание.