我的一般用例是:对于我的Web应用程序(.net核心),我想创建一个服务。 Microsoft从.net core 2.1开始,旨在使用“通用主机”轻松创建服务。但是我想从Web应用程序启动和停止我的服务,这就是为什么我在寻找解决方案。在Microsoft文档中,我找到了一种称为“外部控制” https://docs.microsoft.com/fr-fr/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-2.2#external-control
的方法这是我正在谈论的代码:
public class Program {
private IHost _host;
public Program()
{
_host = new HostBuilder()
.Build();
}
public async Task StartAsync()
{
_host.StartAsync();
}
public async Task StopAsync()
{
using (_host)
{
await _host.StopAsync(TimeSpan.FromSeconds(5));
}
}
}
似乎我们可以从外部应用程序调用通用主机,但是Microsoft文档中没有足够的说明,这就是为什么我一直在寻求帮助并说明如何使用它,或者您是否有任何解决方案可以从中控制通用主机.net核心Web应用程序? 感谢您的帮助
答案 0 :(得分:1)
您误读了“外部”一词。该文档指出:
可以使用可以在外部调用的方法来实现对主机的外部控制:
,然后显示以下示例:
public class Program
{
private IHost _host;
public Program()
{
_host = new HostBuilder()
.Build();
}
public async Task StartAsync()
{
_host.StartAsync();
}
public async Task StopAsync()
{
using (_host)
{
await _host.StopAsync(TimeSpan.FromSeconds(5));
}
}
}
在此上下文中,外部是主机本身以外的一段代码。它应该是同一过程中的代码,就像加载的另一个类或另一个程序集一样。
在这种情况下,外部不是 的意思,它来自另一个过程,其中包括Web api或网站。
似乎我们可以从外部应用程序
调用通用主机
因此,假设您正在考虑开发一个控制台应用程序,它将构建一个主机并通过您的Web应用程序对其进行控制,那么这将无法正常工作。