Завершение текущих запросов при остановке собственного сервера owin

У меня есть OWIN сервер как часть консольного приложения. Вы можете увидеть основной метод здесь:

class Program
{
    public static ManualResetEventSlim StopSwitch = new ManualResetEventSlim();

    static void Main(string[] args)
    {
        Console.CancelKeyPress += (s, a) =>
        {
            a.Cancel = true;
            StopSwitch.Set();
        };

        using (WebApp.Start<Startup>("http://+:8080/"))
        {
            Console.WriteLine("Server is running...");
            Console.WriteLine("Press CTRL+C to stop it.");
            StopSwitch.Wait();
            Console.WriteLine("Server is stopping...");
        }

        Console.ReadKey();
        Console.WriteLine("Server stopped. Press any key to close app...");
    }
}

Когда обработка запроса немного дольше и в то же время пользователь нажимает CTRL + C, чтобы остановить приложение, обработка запроса немедленно останавливается и ответ не отправляется. Можно ли изменить это поведение? Я хотел бы отклонить все новые запросы, но подождите, пока запросы, которые в данный момент обрабатываются, не будут выполнены, и после этого остановите сервер.

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

Ответы на вопрос(1)

Ваш ответ на вопрос