Пошаговое руководство. Настройка приложений ASP.NET в IIS 7.0
Обновлен: Ноябрь 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.
Дополнительные сведения см. в разделах Запуск веб-приложений на Windows Vista с IIS версии 7.0 и Visual Studio и Запуск веб-приложений на Windows Server 2008 с помощью IIS 7.0 и 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.
Создание настраиваемого HTTP-модуля
Для начала потребуется создать новый веб-узел.
Создание нового веб-узла
В 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. Если это так, нажмите кнопку Да.
В файле класса удалите существующий код и замените его следующим кодом:
Imports System Imports System.Configuration Imports System.Web Imports System.Web.Security Imports System.Web.UI Public Class CustomModule Implements IHttpModule Public Sub New() ' Constructor End Sub Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init AddHandler app.BeginRequest, AddressOf Me.BeginRequest End Sub Public Sub BeginRequest(ByVal source As Object, ByVal e As EventArgs) Dim app As HttpApplication = CType(source, HttpApplication) Dim cont As HttpContext = app.Context Dim notification As String = cont.CurrentNotification.ToString() Dim postNotification As String = cont.IsPostNotification.ToString() cont.Response.Headers.Set("CustomHeader2", "ASPX, Event = " & notification & _ ", PostNotification = " & postNotification + _ ", DateTime = " & DateTime.Now.ToString()) End Sub Public Sub Dispose() Implements IHttpModule.Dispose End Sub End Class
using System; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; public class CustomModule : IHttpModule { public CustomModule() { // Constructor } public void Init(HttpApplication app) { app.BeginRequest += new EventHandler(BeginRequest); } public void BeginRequest(object source, EventArgs e) { HttpApplication app = (HttpApplication)source; HttpContext cont = app.Context; string notification = cont.CurrentNotification.ToString(); string postNotification = cont.IsPostNotification.ToString(); cont.Response.Headers.Set("CustomHeader2", "ASPX, Event = " + notification + ", PostNotification = " + postNotification + ", DateTime = " + DateTime.Now.ToString()); } public void Dispose() { } }
Этот код выполняет следующие действия:
Определяет настраиваемый модуль управляемого кода, реализующий интерфейс IHttpModule.
Определяет обработчик событий для события BeginRequest экземпляра HttpApplication. Обработчик событий определяет настраиваемый заголовок, добавляемый к коллекции заголовка ответа.
Добавляет обработчик к конвейеру запросов для уведомления в методе Init модуля.
Поскольку класс реализует интерфейс IHttpModule, класс должен реализовать метод Init и метод Dispose. Метод Dispose в этом модуле не имеет функциональных возможностей, но в нем можно при необходимости реализовать логику удаления.
В меню Построение выберите команду Построить веб-узел, чтобы убедиться, что ошибки в модуле отсутствуют.
В качестве последней задачи в этом подразделе нужно создать страницы ASP.NET и HTML, используемые позднее в этом пошаговом руководстве для проверки настраиваемого модуля.
Создание тестовых страниц ASP.NET и HTML
Добавьте новую однофайловую веб-страницу ASP.NET с именем ASPXpage.aspx в корневую папку приложения.
Удалите существующую разметку и замените ее на следующую:
<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>ASPX Module Test Page</title> </head> <body> <form id="form1" runat="server"> <div> <%= Response.Headers.Get("CustomHeader2").ToString() %> </div> </form> </body> </html>
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>ASPX Module Test Page</title> </head> <body> <form id="form1" runat="server"> <div> <%= Response.Headers.Get("CustomHeader2").ToString() %> </div> </form> </body> </html>
Добавьте новую HTML-страницу с именем HTMLPage.htm в корневую папку веб-приложения.
Добавьте следующую разметку на HTML-страницу:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>HTML Module Test Page</title> </head> <body> <div> HTML page. <br /> </div> </body> </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>HTML Module Test Page</title> </head> <body> <div> HTML page. <br /> </div> </body> </html>
Сохраните все изменения.
Запустите по отдельности страницу ASPXpage.aspx и страницу HTMLpage.htm, чтобы убедиться в возможности их просмотра в обозревателе.
Примечание. Не закрывайте приложение Visual Studio. Позднее потребуется вернуться к этому приложению, чтобы проверить изменения конфигурации, осуществленные с помощью диспетчера IIS Manager.
На этом этапе страницы выполняются, но не вызывают настраиваемый модуль. В следующей процедуре необходимо добавить настраиваемый модуль к конвейеру запросов.
Внесение изменений в параметры конфигурации с помощью диспетчера IIS
В этом разделе потребуется использование диспетчера 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.
Подробные сведения функции Сжатие будут отображены в центральной области.
Убедитесь, что флажок Включить сжатие статического содержимого не установлен.
Проверка изменений в параметрах конфигурации в Visual Studio
В данном пошаговом руководстве были выполнены задачи, связанные с изменением параметров конфигурации с помощью диспетчера 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> <modules> <add name="CustomModule" type="CustomModule" preCondition="" /> </modules> <httpProtocol> <customHeaders> <add name="CustomHeader1" value="SampleHeader" /> </customHeaders> </httpProtocol> <urlCompression doStaticCompression="false" /> </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).
См. также
Задачи
Пошаговое руководство. Настройка приложений ASP.NET в IIS 6.0 с помощью консоли управления (MMC)
Основные понятия
Перемещение приложения ASP.NET из IIS 6.0 в IIS 7.0