Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在startup.cs中运行/触发服务?_.net_Asp.net Core_.net Core_Asp.net Core Mvc_Asp.net Core 2.0 - Fatal编程技术网

.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分钟后运行一次该怎么办?是的。在这种情况下,您需要托管服务。