В чем разница между веб-приложением и виртуальной папкой в ​​контексте IIS 7.x? - PullRequest
48 голосов
/ 31 марта 2011

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

  • Почему существует два разных типа?

  • Какова цель каждого?

Ответы [ 2 ]

83 голосов
/ 31 марта 2011

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

Приложение - это то, где код, который выполняется внутри этой «папки», имеет свое собственное состояние сеанса и состояние приложения. По сути, это новое отдельное приложение, живущее под корневым приложением.

Например, если вы должны были развернуть приложение ASP.NET на сайте с папкой приложения под названием /myapp, тогда у этого приложения был бы собственный домен приложения, состояние сеанса, состояние приложения, полностью отделенное от другого ASP.NET. приложение работает в /. Например: если вы задали значение Application Application["Thing"] = 123 в корневом приложении, а затем сделали то же самое, но с другим значением в /myapp, тогда Application["Thing"] в корневом каталоге не будет перезаписано присваиванием в /myapp.

Еще одна вещь, которую вы можете сделать с приложениями, это указать другой пул приложений для запуска. Например, ваше корневое приложение / может содержать приложение ASP.NET 2.0 и работать в пуле, настроенном для .NET 2.0. Однако вы можете запустить приложение для блога или форума, написанное на ASP.NET 4.0. Теперь, поскольку вы не можете смешивать версии среды выполнения ASP.NET в одном пуле приложений, вы можете указать альтернативный пул приложений специально для приложений ASP.NET 4.0.

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

Если вас интересует базовая механика виртуальных каталогов и приложений на IIS7, взгляните на ответ, который я недавно отправил:

Использование ServerManager для создания приложения в приложении

1 голос
/ 30 июня 2016

Чтобы добавить информацию к тому, что Kev очень хорошо упомянул - все виртуальные каталоги по умолчанию запускаются в предопределенном пуле приложений с именем DefaultAppPool.DefaultAppPool поставляется по умолчанию с IIS, когда вы включаете эту функцию в Windows.Для WebApps вы всегда можете создавать свежие / новые appPools и запускать ваше webApp внутри только что созданного appPool.Эти appPools предоставляют вам физическое / отдельное пространство процесса (в форме рабочих процессов), с помощью которого IIS может предоставлять сервисы, такие как состояние сеансов, состояние приложения и т. Д. В хранилищах, веб-приложению, когда у него определен собственный appPool.Всякий раз, когда происходит сбой appPool вашего веб-приложения, другие веб-приложения (использующие собственный настраиваемый appPool) или виртуальные каталоги (используя DefaultAppPool appPool) остаются полностью незатронутыми.

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