c# - 如何在启动时启动服务 (`IServiceCollection` )

标签 c# asp.net-mvc asp.net-web-api asp.net-core esb

我有一个单例服务,我想在启动时运行,而不是等待一些 Controller 通过依赖注入(inject)构建服务。

该服务处理来自服务总线的数据,它似乎并不完全依赖于客户端流量。最干净的初始化方法是什么?

最佳答案

通常您正常实例化服务,然后将它的引用传递给 AddSingleton() 方法。

var someRepository = new SomeRepository(/*pass in configuration and dependencies*/);

// pass instance of the already instantiated service
services.AddSingleton<ISomeRespository>(someRepository);

编辑

或者一个预热扩展方法:

public static class WarmupServiceProviderExtensions
{
    public static void WarmUp(this IServiceProvider app)
    {
        // Just call it to resolve, no need to safe a reference
        app.RequestService<ISomeRepository>();
    }
}

在你的 Startup.cs 中

public void Configure(IServiceProvider app) 
{
    app.UseXyz(...);

    // warmup/initailize your services
    app.WarmUp();
}

关于c# - 如何在启动时启动服务 (`IServiceCollection` ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36785088/

相关文章:

asp.net-mvc - 在用户声明表中存储多个用户数据

c# - Dapper 多参数存储过程查询不会从数据库返回任何内容

javascript - 导航属性未正确加载

时间:2019-05-17 标签:c#genericclass: how can I restrict a member function to be used with specific types?

c# - 适用于 C# 的 Google 搜索 API

c# - 如何编写 LINQ to SQL 查询以获取今天的日期记录?

c# - asp.net mvc 捆绑 gzip 压缩不起作用

angularjs - 使用 OWIN 的静态文件服务器 -> 找不到文件错误

c# - 我应该做哪些事情来创建高性能且健壮的反射缓存?

c# - 如何从 C# Web 服务以 JSON 形式返回数据表/数据集