@Fly3110
web developer

Как завершить приложение так, чтобы IIS Express его не запустил при новом запросе?

Есть стандартное ASP.NET Core приложение, которое реализует простой REST API.

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

private static void ExitApplication()
        {
            cancelTokenSource.Cancel();
            _webHost.StopAsync(ApplicationLifetime.ApplicationStopping).Wait();
            ApplicationLifetime.StopApplication();
            Environment.Exit(0);
        }


как завершить приложение так, чтобы и в IIS Express оно больше не было видно?
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
@FreeBa
Это не просто не правильно - это совсем не правильно. Приложение asp.net исполняется в рамках веб-сервера, в логике которого убийство приложения, не является окончанием выполнения. Ну вот так веб устроен.

Вешайте свое приложение либо в изолированное приложение на базе кестреля - которое кликом по exe-файлу запускается (это ооочень не рекомендуется, кестрель никто не тестировал на уязвимости, он обычно под крышей IIS работает, либо под NGINX), либо в службу пакуйте - для windows way.

И тот и тот случай крайне негативный. Веб сервисы не предназначены для окончательной смерти. Это ближе к десктопному приложению.

PS: Вы не сможете завершить процесс IIS Express изнутри (а она возобновить ваше приложение сможет). Нет такой команды. И никогда не будет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы