Назад | Перейти на главную страницу

Как «переработать» процесс IIS без перезагрузки сервера?

Получение ASP.NET для просмотра изменений в PATH
Я изменил окружающую среду PATH на моем сервере и мне нужен IIS / W3WP (то есть мое приложение ASP.NET), чтобы увидеть это изменение. Я понимаю из ответ на этот другой вопрос это (выделено мной):

Вы должны будете переработать процесс IIS чтобы обновить

Мой вопрос: как «переработать» процесс IIS?

Вот что я пытался решить эту проблему:

Чтобы добавить некоторые последние детали на тот случай, если они важны. В моем сценарии я пытаюсь начать bcp.exe с чем-то в этом роде:

using (var process = new Process()) 
{
    process.StartInfo.FileName = "bcp.exe";
    process.StartInfo.Arguments = myArguments;
    process.StartInfo.UseShellExecute = false;
    process.Start();
    // Code to handle the process exiting and use the output.
}

Нам требуется BCP версии 11, но на сервере была версия 10. Инструмент имеет автономный установщик, который добавляет следующие важные элементы в PATH:

Это невозможно.

Переменные среды наследуются от родительских процессов (вплоть до процесса входа в систему) во всех современных ОС (afaik), если вы измените переменную, вы должны убедиться, что сеанс, в котором запущен процесс, перезапущен (вид выхода из системы и включения).

Поскольку IIS основан на services.exe, вы не сможете сделать это без перезапуска (удаление services.exe запрещено).

Вот это КБ об этом.

Я столкнулся с той же проблемой только сейчас и прочитал статью базы знаний, указанную в ответе Нитца. Это меня взволновало, потому что в этой статье конкретно упоминаются процессы, выполняющиеся как «Локальная система». В моем случае я запускаю свои пулы приложений под определенными учетными записями пользователей (делает возможным вход в SQL Server без пароля в файле конфигурации), и я знал, что в пуле приложений есть параметр «Загрузить профиль пользователя», который по умолчанию имеет значение «false». Установите для этого параметра значение true, и теперь повторное использование моего пула приложений, похоже, отлично помогает.

Таким образом, если вы можете запустить пул приложений под другим пользователем, а не «локальной системой», это может решить проблему.

Если iisreset действительно не работает, то попробуйте перезапустить службу W3SVC (в services.msc). По сути, это полный перезапуск IIS.