Управление 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-адрес выглядит следующим образом:
http://mywebserver:80
Каждый сайт может содержать множество файлов и каталогов. Каждый из них образует часть URL-адреса. Так, URL-адрес статической страницы mypage.html, расположенной в каталоге myfiles, будет следующим:
http://mywebserver:80/myfiles/mypage.html
В некоторых ситуациях имя, под которым сервер известен вам, и имя, которое клиенты используют для получения содержимого, будут различаться
Мы оставим этот нюанс без внимания, но администратор сервера или компания, предоставляющая услуги хостинга, предоставят необходимые сведения, если это важно для конкретного сервера
Чтобы проверить работоспособность IIS выберите Default Web Site и в правой области диспетчера служб IIS выберите пункт «Запустить». После этого нажмите кнопку «Обзор *.80 (http)» чтобы открыть страницу сайта в браузере:
Как видите, в моем случае я поменял порт используемый по умолчанию (с 80 на 8080). Я сделал это, т.к. на 80-м у меня запущен локальный Apache-сервер. Если у вас возникает такая же проблема, то изменить порт можно щелкнув правой кнопкой мыши по сайту (Default Web Site) и выбрав в контекстном меню «Изменить привязки» (Bindings). После этого в диалоговом окне можно изменить порт, используемый по умолчанию.
Итак, каждый сервер может поддерживать множество сайтов, каждый из которых работает на другом порту или с другим IP-адресом. Каждый сайт может иметь множество файлов и каталогов, и сочетание этих элементов предоставляет информацию о URL-адресе. Мы вернемся к URL-адресам и использованию IIS Manager при рассмотрении каждого из подходов к развертыванию.
Разделы справки использовать HTTP/2?
Возможно, вы уже уже! Так как почти все браузеры уже поддерживают ПРОТОКОЛ HTTP/2 в своем самом текущем выпуске, а текущие данные показывают, что более уже находятся в браузерах с поддержкой HTTP/2.
На сервере службы IIS, работающие на Windows 10 или Windows Server 2016 поддерживают протокол HTTP/2.
В настоящее время СЛУЖБЫ IIS поддерживают протокол HTTP/2 только по протоколу TLS. При подключении HTTPS к веб-серверу под управлением IIS на Windows 10 используется протокол HTTP/2, если клиент и сервер поддерживают его. В СЛУЖБАх IIS мы реализовали протокол HTTP/2 как можно более прозрачным образом. Вам не нужно ничего менять в приложении, чтобы http/2 работал. Некоторые оптимизации HTTP/1.1 (сегментирование домена, встраивание и т. д.) больше не рекомендуется использовать в HTTP/2, поэтому их следует удалить в будущем.
А как насчет push-уведомлений?
Так как push-отправка сервера — это новая функция в HTTP/2, есть новые API, которые необходимо вызвать, чтобы воспользоваться преимуществами. При вызове API PushPromise в ASP.NET или API HttpDeclarePush из собственного модуля IIS необходимо указать URL-адрес и необязательные заголовки запросов для ожидаемого запроса. Если принудительное выполнение поддерживается базовым подключением, происходит две вещи:
- PUSH_PROMISE отправляется клиенту, поэтому клиент может проверить, существует ли ресурс в кэше.
- Новый запрос добавляется в очередь запросов для отправленного ресурса.
Если базовое подключение не поддерживает push-отправку (отключаемый клиент или клиент HTTP/1.1), вызов не выполняет никаких действий и возвращает успешное выполнение, поэтому вы можете безопасно вызвать API без необходимости беспокоиться о том, разрешена ли отправка.
Example: Writing to ApplicationHost.config vs. root Web.config
Compression is an IIS feature, and it appears under IIS if you group/filter the home page feature list by Area. If you’ve navigated to the server-level Compression page and you disable static compression, IIS Manager will write this configuration into :
.NET Compilation is .NET Framework configuration, and it appears under ASP.NET if you group/filter the home page feature list by Area. If you’ve navigated to the server-level .NET Compilation page and you set the default language to C#, IIS Manager will add the defaultLanguage attribute to the compilation section in the root web.config file, i.e. :
The status bar for both these situations will read: Configuration: ‘localhost’ applicationHost.config or root web.config
Модуль, схемы и расположение файлов конфигурации
Module
IIS (x86/amd64):
-
%windir%\System32\inetsrv\aspnetcore.dll
-
%windir%\SysWOW64\inetsrv\aspnetcore.dll
IIS Express (x86/amd64):
-
%ProgramFiles%\IIS Express\aspnetcore.dll
-
%ProgramFiles(x86)%\IIS Express\aspnetcore.dll
Схема
Службы IIS
%windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml
IIS Express
%ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml
Параметр Configuration
Службы IIS
%windir%\System32\inetsrv\config\applicationHost.config
IIS Express
-
Visual Studio: {КОРЕНЬ ПРИЛОЖЕНИЯ}\.vs\config\applicationHost.config
-
iisexpress.exe CLI: %USERPROFILE%\Documents\IISExpress\config\applicationhost.config
Развертывание с помощью Visual Studio
Visual Studio предлагает встроенные возможности для упрощения развертывания веб-приложений, что облегчает задачу проектирования сложных веб-сайтов. Visual Studio включает в себя функции, которые интегрируются с IIS и позволяют создавать виртуальные каталоги, не выходя из комфортной среды разработки. Visual Studio предлагает несколько возможностей для интеграции с IIS:
-
Вы можете создавать виртуальный каталог при создании нового проекта.
-
Вы можете использовать функцию Copy Web Site (Копировать веб-сайт) для передачи существующего веб-сайта в виртуальный каталог.
-
Вы можете использовать функцию Publish Web Site чтобы скомпилировать свой сайт и передать его по новому адресу.
При создании веб-сайта в Visual Studio, вы можете одновременно создать виртуальный каталог для этого веб-сайта. Если вы сделаете это, Visual Studio не будет использовать встроенный тестовый сервер IIS Express. Вместо этого, все ваши запросы будут обрабатываться полной версией IIS.
Для создания виртуального каталога IIS сначала необходимо запустить Visual Studio с правами администратора. Затем выберите пункт меню File —> New —> Web Site и в открывшемся диалоговом окне «New Web Site» выберите HTTP для расположения сайта (вместо файловой системы). Вы можете вставить строку URL. Например, если вы укажете
http://localhost/MyWebSite, Visual Studio создаст каталог MyWebSite в виртуальном каталоге C:\Inetpub\Wwwroot используемым по умолчанию:
Такой подход не является лучшим т.к. вы не сможете настроить некоторые параметры, такие как страницы по умолчанию, пользовательские ошибки и т.п. Вместо создания нового виртуального каталога с помощью Visual Studio лучше будет выбрать существующий каталог IIS, который в свою очередь можно сконфигурировать с помощью IIS Manager. Для этого щелкните по кнопке Browse (Обзор) и выберите нужный виртуальный каталог:
В этом окне вы можете добавить или удалить виртуальный каталог используя кнопки вверху справа.
Копирование веб-сайта
Visual Studio также включает в себя быстрый и простой способ для передачи файлов веб-приложения. Вам просто нужно выбрать в меню WebSite —> Copy Web Site. Откроется новое диалоговое окно Visual Studio, которое покажется знакомым любому, кто имел дело с различными IDE-программами для работы с сайтами, такими как Dreamweaver или Expression Web:
Это окно состоит из двух списков файлов. Слева находятся файлы в текущем проекте (на локальном жестком диске). Справа находятся файлы на целевом месте (удаленный веб-сервер). При первом открытии этого окна вы ничего не увидите справа, потому что вы не указали цель. Вы должны нажать кнопку Connect вверху, чтобы предоставить эту информацию. При этом Visual Studio откроет знакомое диалоговое окно, которое выглядит почти так же, как то, что вы видели при создании виртуального каталога для нового проекта. В этом окне вы можете выбрать одно из мест, куда нужно копировать веб-сайт:
- File System
-
Это самый простой выбор — вы копируете файлы сайта внутри текущей файловой системы.
- Local IIS
-
Позволяет выбирать виртуальные каталоги локального сервера IIS. Это удобно если сайт нужно будет разместить в другом каталоге.
- FTP Site
-
Обеспечивает доступ к удаленному сайту через FTP. Многие хостинг-провайдеры предлагают доступ к сайтам через FTP, так что благодаря этой настройке вы можете сразу разворачивать свой сайт на удаленном веб-сервере, не прибегая к услугам различных FTP-программ наподобие TotalCommander:
- Remote Web Server
-
Эта опция предлагает подключение к сайту по URL-адресу с использованием расширения FrontPage Extensions.
Как только вы выберите соответствующий пункт назначения, нажмите кнопку Open. Visual Studio попытается подключиться к удаленному сайт и получить список файлов.
Модели размещения
Модель внутрипроцессного размещения
Чтобы настроить приложение для внутрипроцессного размещения, добавьте свойство к файлу проекта приложения со значением (размещение вне процесса имеет значение ):
Модель внутрипроцессного размещения не поддерживается для приложений ASP.NET Core, предназначенных для .NET Framework.
Значение не учитывает регистр, поэтому и являются допустимыми значениями.
Если свойство отсутствует в файле, значение по умолчанию — .
При внутрипроцессном размещении применимы следующие характеристики:
-
HTTP-сервер IIS () используется вместо сервера Kestrel. Для внутрипроцессной обработки вызывает UseIIS для выполнения следующих действий:
- Регистрация .
- Настройка порта и базового пути, которые будет прослушивать сервер при выполнении за модулем ASP.NET Core.
- Настройка перехвата ошибок запуска на узле.
-
не применяется к внутрипроцессному размещению.
-
Совместное использование пула приложений среди приложений не поддерживается. Используйте один пул приложений для каждого приложения.
-
При использовании веб-развертывания или размещении вручную приложение может не завершить работу сразу при наличии открытого соединения. Например, подключение websocket может задерживать завершение работы приложения.
-
Архитектура (разрядность) приложения и установленная среда выполнения (x64 или x86) должны соответствовать архитектуре пула приложений.
-
Обнаружены отключения клиентов. При отключении клиента происходит отмена токена отмены HttpContext.RequestAborted.
-
В ASP.NET Core 2.2.1 и более ранних версий GetCurrentDirectory возвращает рабочий каталог процесса, запущенного службами IIS, а не каталог приложения (например, C:\Windows\System32\inetsrv для w3wp.exe).
Пример кода, который задает текущий каталог приложения, см. в разделе Класс CurrentDirectoryHelpers. Вызовите метод . Последующие вызовы GetCurrentDirectory возвращают каталог приложения.
-
При размещении в процессе AuthenticateAsync не вызывается внутри для инициализации пользователя. Таким образом, реализация IClaimsTransformation, используемая для преобразования утверждений после каждой проверки подлинности, не активируется по умолчанию. При преобразовании утверждений с реализацией IClaimsTransformation вызовите AddAuthentication для добавления служб проверки подлинности:
Модель размещения вне процесса
Чтобы настроить приложение для размещения вне процесса, используйте один из следующих подходов в файле проекта.
- Не указывайте свойство . Если свойство отсутствует в файле, значение по умолчанию — .
- Установите для свойства значение (внутрипроцессное размещение имеет значение ):
Это значение не учитывает регистр, поэтому и являются допустимыми значениями.
Сервер Kestrel используется вместо HTTP-сервера IIS ().
Для внепроцессной обработки вызывает UseIISIntegration для выполнения следующих действий:
- Настройка порта и базового пути, которые будет прослушивать сервер при выполнении за модулем ASP.NET Core.
- Настройка перехвата ошибок запуска на узле.
Изменения модели размещения
Если параметр изменяется в файле web.config (как описано в разделе ), модуль перезапускает рабочий процесс для служб IIS.
Для IIS Express модуль не перезапускает рабочий процесс, а запускает нормальное завершение работы текущего процесса IIS Express. Следующий запрос для приложения порождает новый процесс IIS Express.
Имя процесса
сообщает / (внутри процесса) или (вне процесса).
Многие собственные модули, такие как проверка подлинности Windows, остаются активными. Дополнительные сведения о модулях IIS, активных с модулем ASP.NET Core, см. в статье Модули IIS с ASP.NET Core.
Дополнительные возможности модуля ASP.NET Core:
- Задание переменных среды для рабочего процесса.
- Внесение в журнал выходных данных stdout для хранилища файлов с целью устранения неполадок при запуске.
- Переадресация токенов проверки подлинности Windows.
Создание и перенаправление журнала
Модуль ASP.NET Core перенаправляет выходные потоки консоли stdout и stderr на диск, если заданы атрибуты и элемента . Все папки, указанные в пути , создаются модулем при создании файла журнала. Пул приложений должен иметь доступ на запись в папку, где записываются журналы (используйте атрибут для предоставления разрешения на запись).
Журналы не выполняют циклический сдвиг, пока не произойдет процесс перезапуска или перезагрузки. Администратор несет ответственность за ограничение дискового пространства, которое потребляют журналы.
Журнал stdout рекомендуется использовать только для устранения проблем с запуском приложений при размещении в IIS или при использовании поддержки во время разработки для служб IIS в Visual Studio, а не при локальной отладке и выполнении приложения с использованием IIS Express.
Не используйте журнал stdout для ведения общего журнала приложений. Для обычного входа в приложение ASP.NET Core используйте библиотеку ведения журналов, которая ограничивает размер файла журнала и выполняет циклический сдвиг журналов. Дополнительные сведения см. в разделе .
При создании файла журнала автоматически добавляются отметка времени и расширение файла. Имя файла журнала составляется путем добавления метки времени, идентификатора процесса и расширения файла ( .log) к последнему сегменту атрибута пути (обычно stdout) с символами подчеркивания в качестве разделителей. Если атрибут пути заканчивается элементом stdout, журнал приложения с идентификатором 1934, созданный 5 февраля 2018 г. в 19:42:32, будет иметь имя stdout_20180205194132_1934.log.
В следующем примере элемент настраивает ведение журнала stdout по относительному пути . Убедитесь, что идентификатор пользователя AppPool имеет разрешение на запись по указанному пути.
При публикации приложения для развертывания Службы приложений Azure веб-пакет SDK задает для значение . Переменная среды предопределена для приложений, размещенных в Службе приложений Azure.
Сведения о создании правил фильтрации журналов см. в разделе в документации по ведению журналов ASP.NET Core.
Дополнительные сведения о форматах путей см. в разделе Форматы путей к файлам в системах Windows.
Что такое HTTP/2?
HTTP/2 — это переоделка потока семантики HTTP через TCP-подключения, а поддержка HTTP/2 — в Windows 10 и Windows Server 2016. HTTP/2 является основным обновлением после почти двух десятилетий использования HTTP/1.1 и снижает влияние задержки и нагрузки подключения на веб-серверах.
Основной прогресс HTTP/1.1 был использованием постоянных подключений к службе нескольких запросов в строке. В HTTP/2 постоянное подключение можно использовать для обслуживания нескольких одновременных запросов. В этом процессе HTTP/2 предоставляет несколько дополнительных функций, которые повышают эффективность HTTP по сети.
Одно подключение для нескольких запросов
Для каждого TCP-подключения требуется круговая поездка. Если вы используете шифрование, подтверждение TLS принимает еще 1–2 круговых путей. Все это происходит до отправки первого байта первого ответа. Повторное использованием существующего подключения вместо настройки нового, эти издержки могут совместно использоваться многими запросами. HTTP/2 резко сокращает необходимость ожидания запроса во время установки нового подключения или ожидания простоя существующего подключения. Так как одно подключение мультиплексируется между несколькими запросами, запрос обычно можно отправлять немедленно, не ожидая завершения других запросов.
Сжатие заголовков с помощью HPACK
Http поддерживает сжатие данных в течение веков. Заголовки, однако, отправляются как несжатый текст с большим количеством избыточности между запросами. (Многие из самых длинных заголовков отправляются с одинаковым значением для каждого запроса!) HTTP/2 представляет HPACK, схему сжатия для заголовков HTTP, которая снижает избыточность между запросами.
Сжатие помогает мультиплексирование, так как запросы меньше. Это позволяет клиентам выполнять множество запросов в первых пакетах подключения, а окна управления потоками TCP по-прежнему малы.
Отправка сервера
Запросы приходят в шаблоны. Если клиент запрашивает один ресурс, сервер часто может спрогнозировать, что ему потребуются другие ресурсы, на которые ссылается страница. В HTTP/1.1 встраивание использовалось для доставки этих ресурсов клиентам в рамках первого ответа. Встраивание имеет свои недостатки, в частности, что встроенный ресурс не может быть кэширован для использования на других страницах, на которые также можно ссылаться.
HTTP/2 представляет концепцию «push» — сервер, отвечающий на запросы, которые клиент еще не сделал, но он прогнозирует, что клиент будет. Это позволяет серверам продолжать предоставлять преимущества задержки при встраивание, но в форме, которую клиент может кэшировать и повторно использовать на других страницах.
Расширенные журналы диагностики
Модуль ASP.NET Core можно настроить. Он позволяет работать с расширенными журналами диагностики. Добавьте элемент в элемент в . Задайте параметру значение , чтобы обеспечить высокую точность диагностических сведений:
Папки, указанные в пути к значению ( в приведенном выше примере), не создаются модулем автоматически и должны заранее существовать в развертывании. Пул приложений должен иметь доступ на запись в папку, где записываются журналы (используйте атрибут для предоставления разрешения на запись, где заполнитель — это имя пула приложений).
Значения уровня отладки () могут включать уровень и расположение.
Уровни (в порядке возрастания степени детализации):
- ОШИБКА
- ПРЕДУПРЕЖДЕНИЕ
- ИНФОРМАЦИЯ
- TRACE
Расположения (допускаются несколько расположений):
- CONSOLE
- EVENTLOG
- FILE
Параметры обработчика могут быть указаны с помощью переменных среды:
- . Путь к файлу журнала отладки. (Значение по умолчанию: .)
- . Параметр уровня отладки.
Предупреждение
Не оставляйте ведение журнала отладки включенным в развертывании дольше того времени, которое требуется для устранения проблемы. Размер журнала не ограничен. Если оставить журнал отладки включенным, он может исчерпать все доступное место на диске и привести к сбою сервера или службы приложений.
См. пример элемента в файле в разделе .
Managed Modules
In addition to native modules, IIS enables you to use managed code modules to extend IIS functionality. Some of the managed modules, such as UrlAuthorization, have a native module counterpart that provides a native alternative to the managed module.
Note
Managed modules depend on the ManagedEngine module.
The following table lists the managed modules that are available with a full installation of IIS 7 and later. For more information about the managed modules, see the .NET Framework SDK 2.0 on MSDN.
Module Name | Description | Resource |
---|---|---|
AnonymousIdentification | Manages anonymous identifiers, which are used by features that support anonymous identification such as ASP.NET profile. | System.Web.Security.AnonymousIdentificationModule |
DefaultAuthentication | Ensures that an authentication object is present in the context. | System.Web.Security.DefaultAuthenticationModule |
FileAuthorization | Verifies that a user has permission to access the requested file. | System.Web.Security.FileAuthorizationModule |
FormsAuthentication | Supports authentication by using Forms authentication. | System.Web.Security.FormsAuthenticationModule |
OutputCache | Supports output caching. | System.Web.Caching.OutputCacheModule |
Profile | Manages user profiles by using ASP.NET profile, which stores and retrieves user settings in a data source such as a database. | System.Web.Profile.ProfileModule |
RoleManager | Manages a RolePrincipal instance for the current user. | System.Web.Security.RoleManagerModule |
Session | Supports maintaining session state, which enables storage of data specific to a single client within an application on the server. | System.Web.SessionState.SessionStateModule |
UrlAuthorization | Determines whether the current user is permitted access to the requested URL, based on the user name or the list of roles of which a user is a member. | System.Web.Security.UrlAuthorizationModule |
UrlMappingsModule | Supports mapping a real URL to a more user-friendly URL. | System.Web.UrlMappingsModule |
WindowsAuthentication | Sets the identity of the user for an ASP.NET application when Windows authentication is enabled. | System.Web.Security.WindowsAuthenticationModule |
HTTP Request Processing in IIS
IIS 7 and later have a similar HTTP request-processing flow as IIS 6.0. The diagrams in this section provide an overview of an HTTP request in process.
The following list describes the request-processing flow that is shown in Figure 1:
- When a client browser initiates an HTTP request for a resource on the Web server, HTTP.sys intercepts the request.
- HTTP.sys contacts WAS to obtain information from the configuration store.
- WAS requests configuration information from the configuration store, applicationHost.config.
- The WWW Service receives configuration information, such as application pool and site configuration.
- The WWW Service uses the configuration information to configure HTTP.sys.
- WAS starts a worker process for the application pool to which the request was made.
- The worker process processes the request and returns a response to HTTP.sys.
- The client receives a response.
Figure 1: Overview of an HTTP Request
In a worker process, an HTTP request passes through several ordered steps, called events, in the Web Server Core. At each event, a native module processes part of the request, such as authenticating the user or adding information to the event log. If a request requires a managed module, the native ManagedEngine module creates an AppDomain, where the managed module can perform the necessary processing, such as authenticating a user with Forms authentication. When the request passes through all of the events in the Web Server Core, the response is returned to HTTP.sys. Figure 2, below, shows an HTTP request entering the worker process.
Hypertext Transfer Protocol Stack (HTTP.sys)
The HTTP listener is part of the networking subsystem of Windows operating systems, and it is implemented as a kernel-mode device driver called the HTTP stack (HTTP.sys). HTTP.sys listens for HTTP requests from the network, passes the requests onto IIS for processing, and then returns processed responses to client browsers.
In IIS 6.0, HTTP.sys replaced Windows Sockets API (Winsock), which was a user-mode component used by previous versions of IIS to receive HTTP requests and send HTTP responses. IIS 7 and later continue to rely on HTTP.sys for HTTP requests.
HTTP.sys provides the following benefits:
- Kernel-mode caching. Requests for cached responses are served without switching to user mode.
- Kernel-mode request queuing. Requests cause less overhead in context switching because the kernel forwards requests directly to the correct worker process. If no worker process is available to accept a request, the kernel-mode request queue holds the request until a worker process picks it up.
- Request pre-processing and security filtering.
How do I use HTTP/2?
You might be already! Since Almost all browsers already support HTTP/2 in their most current release, and current data shows that over are on HTTP/2-capable browsers already.
On the server, IIS running on Windows 10 or Windows Server 2016 supports HTTP/2.
IIS currently supports HTTP/2 only over TLS. When making an HTTPS connection to a web server running IIS on Windows 10, HTTP/2 is used if the client and server both support it. In IIS, we’ve implemented HTTP/2 as transparently as possible — you shouldn’t need to change anything in your application for HTTP/2 to work. Certain HTTP/1.1 optimizations (domain sharding, inlining, etc.) are no longer recommended in HTTP/2, though, so you should plan to remove these in the future.
What about push?
Since Server Push is a new feature in HTTP/2, there are new APIs that you need to call to take advantage of it. When you call the PushPromise API in ASP.NET or the HttpDeclarePush API from an IIS native module, you provide the URL and optional request headers for the request you anticipate the client making. If push is supported by the underlying connection, two things happen:
- A PUSH_PROMISE is sent to the client, so the client can check whether the resource already exists in the cache
- A new request is added to the request queue for the pushed resource
If the underlying connection doesn’t support push (client disabled push, or HTTP/1.1 client), the call does nothing and returns success, so you can safely call the API without needing to worry about whether push is allowed.
ASP.NET Integration
IIS allows Web applications to fully leverage the powerful features and extensibility of ASP.NET 2.0. ASP.NET features including forms-based authentication, membership, session state and many others can be used for all types of content, providing a unified experience across the entire Web application. Developers can use the familiar ASP.NET extensibility model and rich .NET APIs to build IIS server features that are as powerful as those written using the native C++ APIs.
Use the links below to start learning the aspects of IIS configuration, see a lab about getting started and download kits with resources readily available on IIS.NET.
Start Learning
- IIS Modules Overview
- ASP.NET Integration with IIS
- How to Take Advantage of the IIS Integrated Pipeline
- End-to-End Extensibility Example
- Building a Customized Server
- Develop a Module Using .NET
- Develop a Native (C\C++) Module
Get Started
Windows Server 2008 R2 Evaluation Editions and Virtual Labs (https://www.microsoft.com/server-cloud/windows-server/2008-r2-trial.aspx)
Downloads