我怎么知道Kestrel什么时候开始听?
我需要通知systemd
我的服务已成功启动,并且启动后需要运行的任务要求服务器已经在目标Unix域套接字上进行侦听 。
我正在使用IWebHost::Run
启动服务器,这是一个阻塞调用。 此外,我无法找到任何明显的方法来设置委托或回调事件以成功初始化。
任何人?
-
在
.Net Core 1.x
运行IWebHost.Start()
并假设服务器之后被初始化(而不是阻塞线程的Run()
是安全的。 检查来源 。var host = new WebHostBuilder() .UseKestrel() (...) .Build(); host.Start();
-
如果您使用的是
.NET Core 2.0 Preview 1
(或更高版本),则源代码不同 ,同步方法不再可用,因此您应等待IWebHost.StartAsync()
并假设事后已准备就绪。
您可以使用Microsoft.AspNetCore.Hosting.IApplicationLifetime :
/// /// Triggered when the application host has fully started and is about to wait /// for a graceful shutdown. /// CancellationToken ApplicationStarted { get; }
请查看此SOpost以获取配置示例。
这就是我现在最终的目标。 似乎工作正常:
host.Start(); Log.Information("Press Ctrl+C to shut down..."); Console.CancelKeyPress += OnConsoleCancelKeyPress; var waitHandles = new WaitHandle[] { CancelTokenSource.Token.WaitHandle }; WaitHandle.WaitAll(waitHandles); Log.Information("Shutting down...");
然后,在Ctrl + C事件处理程序中:
private static void OnConsoleCancelKeyPress(object sender, ConsoleCancelEventArgs e) { Log.Debug("Got Ctrl+C from console."); CancelTokenSource.Cancel(); }
- ASP.Net Core Web API基于约定的路由?
- ASP.NET Core 1.0 POST IEnumerable 到控制器
- VS.NET 2017强制在ASP.NET 2.0 Core应用程序中使用StackExchange.Redis 1.2.4.0
- EF 7(核心)。 像AddTransient一样创建DBContext
- 从ASP.NET 5控制器VS 2015获取wwwroot文件夹路径
- dotnet core方法’ValidateOptions’…没有实现
- 将google idToken替换为本地openId令牌c#
- 用于Windows x64的ASP.NET核心应用程序(.NET Framework)仅在project.assets.json中出错
- 处理ASP.NET Core 1.0上的大型文件上传