首页 > 解决方案 > 在应用程序开始时创建注入对象,而不是在请求时

问题描述

我创建了一个如下所示的 ASP.NET Core API 项目,启动它,然后等待了几秒钟。在我请求 API URL 之前,没有打印“正在创建 XXX”。我可以告诉 ASP.NET CoreMyXXX在它启动后创建一个是否有请求吗?原因是创建/初始化可能需要一段时间MyXXX,如果在请求之前完成,第一个请求会更快。

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IXXX, MyXXX>();
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

[HttpGet]
public ActionResult<string> Get([FromServices]IXXX xxx)
{
    return xxx.Value.ToString();
}

public interface IXXX
{
    int Value { get; set; }
}

class MyXXX : IXXX
{
    public MyXXX()
    {
        Debug.WriteLine("Creating XXX");
    }
    public int Value { get; set; }
}

标签: c#asp.net-coreasp.net-web-api

解决方案


是的,你当然可以自己做!

var concrete= new MyXXX();
services.AddSingleton<IXXX>(concrete);

推荐阅读