Injecting simple injector components into ihostedservice with asp net core 2 0


ASP.NET is a popular language used for developing web applications. It provides a framework for building dynamic , web services, and web applications. One of the key features of ASP.NET is its ability to inject components using a dependency container.

Dependency Injection in ASP.NET

Dependency injection is a design pattern that allows the separation of concerns in an application. It helps in creating loosely coupled components, making the code more maintainable and testable. ASP.NET provides -in support for dependency injection through its built-in dependency injection container.

Injecting Simple Injector Components into IHostedService

In ASP.NET Core 2.0, the IHostedService was introduced to support long-running background tasks. It allows you to define a that runs in the background and can be started and stopped by the application. If you want to inject Simple Injector components into an IHostedService, you can follow the steps :

Step 1: the Simple Injector NuGet Package

First, you need to install the Simple Injector NuGet package in your ASP.NET project. You can do this by opening the NuGet Package Console and running the following command:

Install-Package SimpleInjector

Step 2: Configure Simple Injector in Startup.cs

Next, you need to configure Simple Injector in the Startup.cs file of your ASP.NET project. You can do this by adding the following code to the ConfigureServices method:

In the above code, we a new instance of the Simple Injector container and set the default scoped lifestyle to AsyncScopedLifestyle. We then register the container as a singleton service in the ASP.NET dependency injection container. Finally, we register our services and components using the container's Register method.

Step 3: Implement the IHostedService

Now, you can implement the IHostedService interface in your background service class. You can inject the required components using the constructor of the class. Here's an example:

public class MyBackgroundService : IHostedService
    private readonly IMyService _myService;

    public MyBackgroundService(IMyService myService)
        _myService = myService;

    public Task StartAsync(CancellationToken cancellationToken)
        // Start your background task
        return Task.CompletedTask;

    public Task StopAsync(CancellationToken cancellationToken)
        // Stop your background task
        return Task.CompletedTask;

In the above code, we inject the IMyService component into the MyBackgroundService class using the constructor. You can then use the injected component in the StartAsync and StopAsync methods to perform your background tasks.


Injecting Simple Injector components into an IHostedService in ASP.NET Core 2.0 is a straightforward process. By following the steps outlined in this article, you can easily configure and use Simple Injector in your background service. This allows you to take advantage of the benefits of dependency injection and create more maintainable and testable code.

Rate this post

Leave a Reply

Your email address will not be published. Required fields are marked *

Table of Contents