Представляем IIS Express
IIS Express будет работать с VS 2010 и Visual Web Developer 2010 Express, запускаться на Windows XP и выше, не требует прав администратора и внесения изменений в код приложения. Позволяет работать со всеми типами ASP.NET приложений и разрабатывать, используя всю мощь возможностей IIS 7.x.
Как обстоят дела в наше время
Прежде чем углубиться в детали IIS Express, давайте быстренько пробежимся по ASP.NET Development Server и IIS.
ASP.NET Development Server
Встроенный в Visual Studio ASP.NET Development Server (так же известен, как “Cassini”) обладает преимуществами легкого и быстро запуска. Он не слушает удаленные порты (что делает проще работу в корпоративной среде в плане безопасности), работает даже когда у вас нет прав администратора, не требует отдельной установки на машину.
![]()
Недостатком же является неполный набор возможностей веб-сервера. Например, отсутствует поддержка SSL, URL Rewriting Rules (о котором я недавно писал), собственных настроек безопасности и другие возможности IIS 7.
IIS веб-сервер
IIS — альтернативный способ для запуска и тестирования приложений с Visual Studio. Вы можете настроить в Visual Studio любой веб-проект использовать IIS, нажав правой кнопкой по проекту, зайдя в свойства и далее выбрав закладку “Web”:
![]()
Используя IIS, как сервер для разработок вы получаете все возможности веб-сервера (SSL, URL Rewrite Rules и т.п.). IIS является полноценным веб-сервером, а это значит, что вы точно видите, как будет работать ваше приложения на публичном сервере.
Но и тут присутствуют недостатки. Многие компании запрещают использовать полноценные веб-сервера на машинах разработчиков. IIS также требует прав администратора для установки и отладки проектов. Различные версии Windows поддерживают различные версии IIS, Например, если у вас Windows XP, то у вас будет стоять IIS 5.1, который не поддерживает все новые возможности IIS 7.x. Настраивая веб-проект в VS на использование IIS, вам придется доустановить недостающие компоненты и пройти дополнительные шаги настройки.
IIS Express – все лучшее
- Он легче и прост в установке (менее 10Mb для загрузки и супер-быстрая установка)
- Не требует прав администратора для запуска/отладки приложений из Visual Studio
- Предоставляет полный набор возможностей веб-сервера, включая SSL, URL Rewrite, поддержка медиа и других IIS 7.x модулей
- Поддерживает ту же модель расширения web.config, что и IIS 7.x
- Может быть установлен рядом с IIS и ASP.NET Development Server, не конфликтует абсолютно
- Работает на Windows XP и выше, дает все преимущества IIS 7.x на всех ОС-платформах
Интеграция с VS 2010
Мы позаботились о простой интеграции IIS Express в Visual Studio 2010. Вы можете использовать его вместо ASP.NET Web Server, как веб-сервер по умолчанию для ASP.NET проектов. Как и с ASP.NET Development Server, вам не нужно регистрировать сайт или виртуальную директорию для IIS Express. Он используют ту же модель работы, что и ASP.NET Web Server сегодня, но только дает больше возможностей.
Когда я нажму F5 для запуска ASP.NET проекта, Visual Studio автоматически запустит IIS Express и будет использовать его для запуска/отладки приложений (никаких дополнительных настроек не требуется). Как и во время работы ASP.NET Web Server, IIS Express будет отображаться в трее панели задач:
![]()
Нажав правой кнопкой по иконке и выбрав “Exit” вы с легкостью выключите IIS Express. Вы также можете просмотреть список всех запущенных сайтов, а так же их месторасположение на диске и версию .NET:
![]()
- Запущенный “Test Site”, как и сам IIS Express, живет в директории c:\users\[username]. Что позволяет являясь не администратором использовать IIS Express, сайты и другие сценарии, которые не возможны с полной версией IIS (включая возможность запускать IIS Express, как в ограниченной по параметрам безопасности корпоративной среде так и на школьных рабочих местах с ограниченным доступом).
- Запущенный “Test Site” поддерживает HTTP и HTTPS методы доступа. IIS Express автоматически устанавливает самоподписной сертификат и включает URL ACL и SSL сертификаты для портов, так что разработчики (работающие не с правами администратора) могут использовать SSL не требуя увеличить права для дополнительной установки или конфигурирования. Это позволяет настраивать защищенные страницы прямо в приложениях (как формы входа) на SSL и тестировать во время разработки, как на реальном веб-сервере.
Набор возможностей IIS 7.x
Сегодня, IIS Express так же легко использовать, как и ASP.NET Web Server. Но, учитывая тот факт, что IIS Express основан на IIS 7x, у вас в руках оказывается полнофункциональный веб-сервер. Вы можете запускать свои приложения, как на реальном внешнем веб-сервере. В добавок к ситуациям, как с SSL, вы можете использовать такие модули, как: URL Rewrite, Media Extensions, Dynamic Compression, Advanced Logging, Custom Security и так далее.
А еще, IIS Express поддерживает классический ASP и другие типы файлов и расширения, который поддерживает IIS, все это делает его идеальным для сайтов, которые комбинируют различные технологии.
Заключение
Мы думаем IIS Express позволит гораздо проще создавать, запускать и тестировать веб-приложения. Он работает со всеми версиями ASP.NET и поддерживает все типа ASP.NET приложений (включая Web Forms и MVC). Что еще лучше – вам не нужно ничего менять в коде. Вы можете использовать его для своих проектов уже сегодня.
Выход публичной beta-версии IIS Express уже скоро. Вы сможете нажать правой кнопкой по любой папке и запустить веб-сайт, находящийся в данной директории, в IIS Express. Позже в этом году, мы выпустим атч для VS 2010 и Visual Web Developer 2010 Express, который позволит использовать IIS Express по умолчанию вместо встроенного ASP.NET Developer Server. Дальнейшие версии Visual Studio будут снабжаться данным функционалом по умолчанию.
IIS Express — «маленький» веб-сервер от Microsoft
Корпорация Microsoft готовит новую версию своего программного веб-сервера Internet Information Services (IIS), которая будет предназначена для упрощенного создания и тестирования сайтов разработчиками
Корпорация Microsoft готовит новую версию своего программного веб-сервера Internet Information Services ( IIS), которая будет предназначена для упрощенного создания и тестирования сайтов разработчиками. Для использования в качестве промышленного веб-сервера она не будет предназначена. Новинка получит название IIS Express и будет включать в себя некоторые наиболее важные черты полнофункционального веб-сервера IIS 7 и сервера для разработчиков Visual Studio ASP.Net Developer Server. «Сегодня я рад анонсировать новую и полностью бесплатную разработку IIS Express, создание которой идет в Microsoft. Она объединяет в себе лучшие характеристики обоих промышленных продуктов и упростит развертывание и создание сайтов на базе ASP.Net, а также приложений для них», — говорит Скотт Гатри, корпоративный вице-президент .Net Developer Platform. Гатри говорит, что IIS Express будет работать с VS 2010 и Visual Web Developer 2010 Express. В качестве рабочей операционной системы для новинки заявлены клиентские операционные системы Windows XP, Vista и 7. Архитектура «маленького» веб-сервера такова, что он даже не требует администраторских полномочий в системе, но весь код ASP на нем будет работать как на обычном IIS. Вместе с тем, новинка не поддерживает ряда функций, реализованных в IIS 7. Здесь нет таких технологий, как Secure Sockets Layer (SSL) и Search Engine Optimization (SEO) URL. Обе разработки довольно важны при создании корпоративных масштабных проектов.
Не ждите, пока хакеры вас взломают — подпишитесь на наш канал и станьте неприступной крепостью!
IIS Express 10.0.6027
![]()
IIS Express — это программное обеспечение веб-сервера, созданное корпорацией Microsoft. Это облегченная версия служб IIS, которую можно использовать для локальной разработки и тестирования веб-приложений. IIS Express входит в состав Microsoft WebMatrix, Visual Studio и SQL Server, а также может быть загружен отдельно.
С помощью IIS Express разработчики могут запускать и тестировать свои веб-приложения, не требуя полной установки IIS или административных привилегий. Он обеспечивает поддержку большинства функций IIS, таких как ASP.NET, переопределение URL-адресов, шифрование SSL и проверка подлинности. IIS Express также позволяет разработчикам отлаживать свои веб-приложения с помощью Visual Studio.
IIS Express можно использовать для различных типов веб-приложений, включая статические веб-сайты, динамические веб-сайты и веб-службы. Он поддерживает несколько веб-приложений, работающих одновременно на разных портах. IIS Express также можно настроить для использования пользовательского пула приложений и параметров.
- Преимущества IIS Express
- Легкий и простой в использовании
- Административные привилегии не требуются
- Поддержка большинства функций IIS
- Разрешает отладку с помощью Visual Studio
- Может использоваться для различных типов веб-приложений
- Поддерживает несколько веб-приложений, работающих одновременно на разных портах
- Настраиваемые параметры
Обзор
IIS Express это программное обеспечение Shareware в категории (2), разработанная © Microsoft Corporation.
Проверяли обновления 3 424 раз пользователями нашего клиентского приложения UpdateStar в прошлом месяце.
Последняя версия IIS Express-10.0.6027, выпущенный на 30.03.2022. Первоначально он был добавлен в нашу базу данных на 15.01.2011.
IIS Express работает на следующих операционных системах: Windows. Загружаемый файл имеет размер 6,5MB.
Пользователи IIS Express дал ему Рейтинг 4 из 5 звезд.
Сервер и публикация приложения
Традиционно приложения ASP.NET развертывались на веб-сервере IIS. Однако поскольку ASP.NET Core имеет кроссплатформенную природу, потребовалось отвязать ASP.NET Core от IIS и в целом от Windows. И на данный момент для развертывания приложения ASP.NET Core поддерживает развертывание приложения на следующих веб-серверах:
IIS и IIS Express, а также предоставляет возможность запускать приложение без IIS в рамках собственного процесса с помощью двух дополнительных http-серверов, которые идут вместе с ASP.NET Core:
- IIS HTTP Server
- Microsoft.AspNetCore.Server.HttpSys (или просто WebListener) (в предыдущих версиях ASP.NET Core назывался WebListener)
- Microsoft.AspNetCore.Server.Kestrel (или просто Kestrel)
HTTP.sys и Kestrel представляют два дополнительных http-серверов, которые идут вместе с ASP.NET Core. HTTP.sys работает только на платформе Windows, а Kestrel является кроссплатформенным.
Кроме того, если приложение использует Kestrel, то в качестве прокси-сервера оно может использовать также IIS, Apache и Nginx. То есть Apache, Nginx или IIS будут получать запросы и перенаправлять их приложению, которое работает на Kestrel. Такая схема, когда запросы идут не напрямую на Kestrel, проходят черех IIS/Apache/Nginx, позволяет нам задействовать возможности, которые есть у этих веб-серверов, но отсутствуют у Kestrel.
IIS и IIS Express
По умолчанию приложения ASP.NET работают с сервером IIS. Однако надо заметить, что по сравнению с предыдущими версиями ASP.NET при работе с ASP.NET Core IIS не использует инфраструктуру System.Web , что значительно повышает производительность приложения. Кроме того, IIS поддерживает множество различного функционала, имеет множество возможностей по администрированию и управлению сервером и размещенными на нем приложениями.
AspNetCoreModule
Хостирование приложений ASP.NET Core на IIS происходит с помощью нативного модуля IIS под названием AspNetCoreModule , который сконфигурирован таким образом, чтобы перенаправлять запросы на веб-сервер Kestrel. Этот модуль управляет запуском внешнего процесса dotnet.exe, в рамках которого хостируется приложение, и перенаправляет все запросы от IIS к этому хостирующему процессу.

При получении первого запроса к приложению AspNetCoreModule запускает процесс для этого приложения и перезапускает процесс, если приложение падает.
Вначале все входящие запросы проходят через драйвер Http.Sys, который перенаправляет их на IIS на основной порт (80) или на порт SSL (443). Затем запрос от IIS перенаправляется приложению ASP.NET Core на определенный порт, на котором запущено приложение (любой другой порт, отличный от 80/443). Веб-сервер Kestrel получает запрос и передает его в виде объекта HttpContext в конвейер middleware ASP.NET Core. Конвейер middleware в приложении обрабатывает запрос и возвращает IIS результат обработки, который затем посылается HTTP-клиенту (например, веб-бразеру).
Для использования модуля он должен быть установлен. Он распространяется в рамках пакета ASP.NET Core Server Hosting Bundle. Но при установки Visual Studio с ASP.NET Core модуль AspNetCoreModule уже автоматически устанавливается для IIS Express / IIS, поэтому разработчикам, как правило, не придется его дополнительно доустанавливать.
Также для использования модуля непосредственно в приложении в проекте должен быть установлен Nuget-пакет Microsoft.AspNetCore.Server.IISIntegration .
Для интеграции с IIS для объекта WebHostBuilder вызывается метод UseIISIntegration() . Этот метод ищет переменные окружения, которые устаналиваются модулем AspNetCoreModule, если подобных переменных не установлено, то метод по сути ничего не делает.
Мы можем вызвать этот метод явно в файле Program.cs:
public class Program < public static void Main(string[] args) < BuildWebHost(args).Run(); >public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup() .UseIISIntegration() .Build(); >
Однако это необязательно делать, поскольку при запуске приложения через IIS система автоматически вызывает данный метод.
Среди преимуществ использования именно IIS, а не Kestrel следует отметить работу со статическими файлами. В стандартном веб-приложении ASP.NET Core за взаимодействие со статическими файлами отвечает middleware StaticFiles, которое было рассмотрено в одной из предыдущих тем. Но на данный момент оно слабо отптимизировано и не поддерживает кэширование. И если мы используем чистый Kestrel, то он при обращении к статическим файлам каждый раз считывает их из файловой системы. А если мы используем IIS в качестве прокси для сервера, то мы можем воспользоваться встроенными возможностями IIS по кэшированию. В частности, IIS кэширует ранее считанный с диска статический файл и при последующих обращениях к нему берет этот файл из кэша, тем самым увеличивая производительность.
Kestrel
Kestrel представляет кроссплатформенный веб-сервер, основанный на кросплатформенной библиотеке асинхронного ввода/вывода libuv. Kestrel по умолчанию включается в проект ASP.NET Core.
При инициализации хоста у объекта WebHostBuilder вызывается метод UseKestrel() , который позволяет задействовать Kestrel. Несмотря на то, что по умолчанию исходный код в файле Program.cs не содержит этого вызова, этот метод вызывается автоматически.
Однако при настройке хоста мы можем явным образом вызвать метод UseKestrel для конфигурации сервера:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using System.Net; using Microsoft.AspNetCore.Server.Kestrel.Core; namespace ServerApp < public class Program < public static void Main(string[] args) < BuildWebHost(args).Run(); >public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup() .UseKestrel(options => < options.Limits.MaxConcurrentConnections = 100; options.Limits.MaxRequestBodySize = 10 * 1024; options.Limits.MinRequestBodyDataRate = new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10)); options.Limits.MinResponseDataRate = new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10)); options.Listen(IPAddress.Loopback, 5000); >) .Build(); > >
Для настройки Kestrela применяются свойства и методы объекта KestrelServerOptions . В частности, метод Listen позволяет установить порт, по которому Kestrel будет запускаться.
Свойство Limits устанавливает предельные значения для различных конфигурационных настроек. Так, свойство MaxConcurrentConnections задает максимально количество оновременно открытых соединений.
Свойство MaxRequestBodySize устанавливает максимальный размер для запроса в байтах.
Свойство MinRequestBodyDataRate задает минимальную скорость передачи данных в запросе в байтах в секунду.
Свойство MinResponseDataRate задает минимальную скорость передачи данных в исходящем потоке в байтах в секунду.
При развертывании на Windows Kestrel может применять IIS в качестве прокси-сервера, а при развертывании на Linux как прокси-серверы могут использоваться Apache и Nginx. Но также Kestrel может работать самостоятельно внтури своего процесса без IIS.
Так, по умолчанию в Visual Studio доступны две возможности для запуска: с проксированием через IIS и напрямую.
При выборе возможностей вариантов запуска мы можем по умолчанию встретить два профиля:

- IIS Express (запуск с проксированием через IIS Express)
- Профиль, который совпадает с названием проекта (в моем случае это HelloApp) — тот пункт, который позволяет запускать приложение в отдельном процессе без всякого проксирования через IIS. Так как в файле Program.cs установлен в качестве сервера Kestrel (методом UseKestrel() ), то в данном случае приложение будет запускать именно Kestrel. Причем по умолчанию приложение будет запускаться на 5000-порту.
И если мы выберем для запуска второй пункт, то у нас запустится консольное приложение dotnet.exe , которое запустит наше приложение. И после этого мы сможем обращаться к нашему приложению из любого браузера:

Запуск приложения с помощью Kestrel довольно прост, нам не надо устанавливать и настраивать другие веб-серверы. Однако специалисты Microsoft рекомендуют такой способ запуска преимущественно в рамках локальной внутренней сети. А если приложение открыто для глобальной сети интернет, то рекомендумым способом запуска для обеспечения большей безопасности является именно проксирование через IIS, Apache, Nginx. Подобный метод имеет ряд преимуществ по сравнению с обычным запуском приложения на Kestrel в виде самохостирующегося процесса. В частности, прокси-серверы позволяет скрыть приложения, если они не должны быть доступны напрямую. Кроме того, веб-серверы позволяет управлять нагрузкой ко всем приложениям, и предоставляют другие функции по управлению приложениями.
Собственно при создании проекта ASP.NET Core в Visual Studio такой способ используется по умолчанию.
HTTP.sys
HTTP.sys представляет HTTP-сервер для ASP.NET Core, который работает только в ОС Windows. Ранне данный сервер назывался WebListener. Он запускается поверх драйвера ядра Http.Sys . Весь функционал сервера сосредоточен в пакете Microsoft.AspNetCore.Server.HttpSys .
Итак, изменим файл Program.cs, чтобы в нем использовался не Kestrel, а HttpSys:
public class Program < public static void Main(string[] args) < BuildWebHost(args).Run(); >public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup() .UseHttpSys() .Build(); >
Если метод UseKestrel() задает в качестве сервера Kestrel, то вызов метода UseHttpSys() аналогичным образом устанавливает в качестве сервера HTTP.sys.
Теперь запустим приложение, выбрав профиль, который совпадает с названием проекта:

И у нас запустится та же самая консоль, что и при работе через Kestrel, только теперь все вызовы к приложению будут идти через WebListener.

Если Kestrel рекомендуется запускать вместе с проксирующими веб-серверами типа IIS, Apache, то для HTTP.sys не требуется проксирующего веб-сервера (более того IIS не может работать с HTTP.sys), так как Http.Sys позволяет обеспечить безопасность и надежность.