Мне нужно отредактировать файл web.config в действующей среде Sharepoint, но я не уверен, что произойдет, если я это сделаю (я хочу выводить собственные ошибки).
Приведет ли это к перезапуску рабочего процесса IIS6?
Потеряют ли из-за этого активные пользователи свое состояние сеанса?
Или можно смело редактировать файл?





Пул приложений перезапустится, и состояние сеанса будет потеряно. Представьте, что каждое приложение ASP.NET (как определено в IIS) - это программа на рабочем столе. Сохранение web.config сделает что-то похожее на закрытие программы и ее повторное открытие.
Не уверен насчет IIS6, но в IIS7 и IIS8 это поведение дефолт, хотя вы можете изменить его через Пулы приложений> Дополнительные параметры> Повторное использование> Отключить повторное использование для изменений конфигурации = правда, что полезно для производственных сред, например, чтобы администраторы могут вносить изменения, которые не вступят в силу до следующего повторного использования. Я считаю, что с помощью Sharepoint можно запланировать изменения так, чтобы они применялись в определенное время.
@nothingisneeded Но, вызывает ли установка Application Pools > Advanced Options > Recycling > Disable recyclingсам перезапуск пула приложений? Черепахи до упора?
Привет, @DanGoldstein. Вы упоминаете «что-то похожее» при закрытии и повторном открытии программы. А как насчет статического состояния? Должно ли статическое состояние обеспечен быть удалено редактированием web.config? Причина в том, что я кэширую некоторые файлы web.config в статических переменных.
Честно говоря, я больше не являюсь хорошим источником информации об этом. Когда я ответил, я все время использовал IIS и ASP.Net. В наши дни я просто увлекаюсь разработкой программного обеспечения.
@DirkBoer Я здесь только для того, чтобы найти окончательный ответ на ваш вопрос. По моему опыту, редактирование web.config не влияет на статические свойства.
Я думаю, что вместо перезапуска «пула приложений» произойдет «перезапуск AppDomain». Поправьте меня, если я ошибаюсь.
Что делать, если в пуле приложений много приложений. Редактирование web.config одного сайта и перезапуск пула приложений кажутся некорректными.
В какой момент жизненного цикла asp.net web.config читается iis? В событии app_start?
Будет переработан AppDomain, а не AppPool. Таким образом, другие веб-приложения, работающие в рамках этого опроса, не пострадают.
Согласно этот ответ, похоже, что приложение будет ждать ответа на запросы, прежде чем перезапустить. Что немного отличается от closing the program and reopening it.. Или вы говорите, что это неверный ответ?
Как уже упоминалось некоторыми людьми: пул приложений сайта в IIS перезапустится (обычно это занимает пару секунд). В результате запрос следующей страницы будет медленнее (так как ничего больше не будет кэшироваться). Также будет потеряно состояние сеанса пользователей; НО в состоянии сеанса WSS по умолчанию не используется, в MOSS используется InfoPath Form Services. Так что, возможно, у вас нет больших проблем, связанных с потерей состояния сеанса.
С другой стороны; для решения этих проблем: обычно создается решение SharePoint (WSP), которое развертывает и запускает задание таймера для внесения изменений в web.config из кода (с использованием класса SPWebConfigModification объектной модели). Приятно то, что вы можете запланировать выполнение изменения, чтобы ваши пользователи этого не заметили.
Также, если состояние сеанса настроено как внепроцессное (база данных или служба), то при повторном использовании пула приложений не будет теряется любое состояние сеанса. Это так же верно для Sharepoint, как и для ванильного ASP.Net.
Когда вы редактируете web.config, он перезапускает AppDomain (НЕ AppPool) этого веб-приложения и очищает все занятые ресурсы и память. Таким образом, другие веб-приложения, работающие в этом пуле приложений, не пострадают. Также он очистит сеансы (в процессе) и кеш памяти.
Вы можете определить сеансы, которые будут размещены на удаленном компьютере, поэтому сброс приложения не приведет к потере сеанса