如果 asp.net core 服务需要先访问外部的 API,才能完全启动服务,需要怎么做呢?
有两个办法可以解决这个问题。
方法1:创建一个IHost扩展方法
首先创建一个类似于下面代码的扩展类,为 IHost 类增加一个 PostStart 方法。
public static class PostStartHostExtention
{
public static IHost PostStart(this IHost host)
{
using(var scope = host.Services.CreateScope())
{
var serviceProvider = scope.ServiceProvider;
// 在这里加上你的初始化方法
return host;
}
}
}
然后,给 CreateHostBuilder 流式方法中增加调用 PostStart, 注意一定要在调用 Run 方法之前调用它。
logger