Я надеюсь, что вы можете мне помочь здесь, потому что я пытался получить некоторые ответы уже на другой доске (посмотреть здесь) Этот вопрос основан на ответе Скотта Форсайта Вот.
При добавлении нового виртуального каталога на «веб-сайт по умолчанию» в диспетчере IIS все другие приложения, расположенные на веб-сайте по умолчанию, каким-то образом повторно используются. Чтобы упростить мою проблему, я взял пример, в котором я мог отслеживать метку времени текущего сеанса, и понял, что информация о сеансе действительно теряется после добавления виртуального диска, что означает переработку домена приложения.
Вот такая ситуация:
Места
Default Web Site
1 (virtual directory) (d:\TestAppDomains\1\)
- app1 (Application) (using App Pool 1)
2 (virtual directory) (d:\TestAppDomains\2\)
- app2 (Application) (using App Pool 2)
Насколько я понял, добавление виртуального каталога просто вносит изменения в applicationHost.config, что не должно вызывать повторное использование доменов приложений. Может быть, это проблема делегирования, но, думаю, мне этого недостаточно, чтобы понять :(
Есть ли какие-либо свойства, влияющие на это поведение? Я уже установил в настройках AppPool режим запрета повторного использования после изменения конфигурации, но это не помогло.
Я был бы ДЕЙСТВИТЕЛЬНО признателен, если бы вы помогли мне с этим, потому что я борюсь с этим уже почти 6 месяцев.
Конечно, я с радостью предоставлю дополнительную информацию, если она вам понадобится.
Обновление 1:
HealthMonitoring не может мне помочь по двум причинам:
Места
Default Web Site
1 (virtual directory) (d:\TestAppDomains\1\)
session1.aspx (Sets current timestamp to session variable and redirects to session2.aspx)
session2.aspx (displays session variable)
Вызывая localhost / 1 / sessions1.aspx, я могу увидеть метку времени. После добавления второго виртуального каталога (например, «2» (d: \ TestAppDomains \ 2)) и обновления страницы сеанс пропадает, что означает, что переменная равна нулю.
Привет, Адам
У меня была такая же ситуация, как вы описали на Форум IIS: один веб-сайт, несколько пулов приложений, несколько пар приложений (веб-сервис) и виртуальных каталогов (html + js), автоматическое развертывание и так далее.
Проблема была такая же: когда я добавил / удалил виртуальный каталог, все приложения перезапустились. Это не было хорошо, так как я планировал обслуживать несколько версий и хотел, чтобы пользователи работали, пока новая версия будет развернута.
Я безуспешно играл с делегированием настроек. Затем я заметил, что добавление / удаление одного приложения не привело к перезапуску других.
Итак, вот решение: создать для веб-страниц отдельное приложение вместо виртуального каталога.
Если у вас есть ASP.NET домен приложения перезапуска, причины подробно описаны здесь:
У вас есть пул приложений повторное ведение журнала событий включено? Это было бы первое, с чего я бы начал:
Если у вас есть приложение ASP.NET, вы также можете включить HealthMonitoring в разделе system.web файла web.config. Эти параметры регистрации могут быть полезны при определении того, что происходит. Образец:
<system.web>
<healthMonitoring enabled="true" heartbeatInterval="1">
<rules>
<add name="HeartBeat"
eventName="Heartbeats"
provider="EventLogProvider"
profile="Default"
minInstances="1"
minInterval="00:01:00"
maxLimit="Infinite"/>
<add name="App Lifetime"
eventName="Application Lifetime Events"
provider="EventLogProvider"
profile="Default"
minInstances="1"
minInterval="00:00:00"
maxLimit="Infinite"/>
</rules>
</healthMonitoring>
Часто задаваемые вопросы - мониторинг работоспособности в ASP.NET 2.0
http://forums.asp.net/t/1027461.aspx/1
Элемент healthMonitoring (схема параметров ASP.NET)
http://msdn.microsoft.com/en-us/library/2fwh2ss9%28v=vs.100%29.aspx