.net 如何在startup.cs中运行/触发服务?
我有一个获取令牌并保存在缓存中的服务,我添加了如下服务,但当应用程序启动时它不运行。我需要做什么才能在启动时触发此服务.net 如何在startup.cs中运行/触发服务?,.net,asp.net-core,.net-core,asp.net-core-mvc,asp.net-core-2.0,.net,Asp.net Core,.net Core,Asp.net Core Mvc,Asp.net Core 2.0,我有一个获取令牌并保存在缓存中的服务,我添加了如下服务,但当应用程序启动时它不运行。我需要做什么才能在启动时触发此服务 public void ConfigureServices(IServiceCollection services) { services.AddScoped<ITokenService,TokenService>(); } public void配置服务(IServiceCollection服务) { services.addScope(); } 调用服
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<ITokenService,TokenService>();
}
public void配置服务(IServiceCollection服务)
{
services.addScope();
}
调用服务。AddScoped
只是将其添加到服务集合中。因此不会发生任何事情,也就是说,它不会自动新建一个实例并在其上运行某些方法
如果需要在启动时发生一次事件,则需要在Program.cs
中实际执行:
public static void Main(string[] args)
{
var host = CreateWebHostBuilder(args).Build();
var tokenService = host.Services.GetRequiredService<ITokenService>();
tokenService.DoSomething();
host.Run();
}
publicstaticvoidmain(字符串[]args)
{
var host=CreateWebHostBuilder(args.Build();
var tokenService=host.Services.GetRequiredService();
tokenService.DoSomething();
host.Run();
}
< /代码> 如果这是一个需要在后台运行的服务,请考虑使用托管服务使用它。
参考文献
我需要每50分钟触发一次
您可以做的是创建一个托管服务,按现在的样子注入令牌服务,并在需要时从托管服务中调用所需的函数
框架将启动托管服务作为启动过程的一部分。
如果这是一个需要在后台运行的服务,请考虑将其作为框架工作,将作为启动过程的一部分启动它。这就是我想你要做的。是的,我还需要在每50分钟后触发它,doc说在计时器上运行,所以它是完美的。我猜你可以做的是创建一个托管服务,注入你的令牌服务,就像现在一样,并在需要时从托管服务中调用所需的函数。我认为这是一个XY问题。看起来OP需要一个带有定时后台任务的托管服务。@Chris如果我需要在启动时以及每50分钟后运行一次该怎么办?是的。在这种情况下,您需要托管服务。