Как остановить `IWebHost` токеном отмены, запущенным на маршруте - PullRequest
0 голосов
/ 14 января 2019

Здравствуйте, я хочу знать, есть ли способ остановить и перезапустить приложение Asp Net Core, введя маршрут к серверу.

Предположим, User A запускает долгосрочную задачу, идущую по маршруту A на сервере. Я хочу, чтобы User B мог получить доступ к маршруту B на сервере и, таким образом, остановить сервер и перезапустить его. Я не хочу убивать весь процесс, просто Webhost. Мне не важно в моем сценарии о безопасном завершении работы пользователя A, я просто хочу убить его и запустить его как можно скорее. Я видел, что есть расширение для IWebHost RunAsync. Я хотел бы знать, могу ли я определить определение CancellationTokenSource в Program.Main, установить его для WebHost и вызвать его cancel, когда кто-то Доступ к определенному маршруту.

public static void Main(string[] args)
        {
CancellationTokenSource tsc=new CancellationTokenSource();
  //pass the token to the webhost,\
            CreateHostBuilder(args).Build().RunAsync(tsc); //wrap it in a Task if need arises
        }

        public static IWebAssemblyHostBuilder CreateHostBuilder(string[] args) =>
            BlazorWebAssemblyHost.CreateDefaultBuilder()
                .UseBlazorStartup<Startup>();

Startup

    public void Configure(IApplicationBuilder builder)
            {
                var tokenSource=..... //extract the tokensource somehow
                builder.UseCors((p) => p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials());
                builder.UseWebSockets();

                builder.Map("/userA", app =>
                {
                    app.UseMiddleware<StatusWare>();
                });
                builder.Map("/userB", app =>
                {
                    tokenSource.cancel();
                });
            }
...