DEV Community


Posted on

C# CreateDefaultBuilder


The host is responsible for app startup and lifetime management. At a minimum, the host configures a server and a request processing pipeline. The host can also set up logging, dependency injection, and configuration.

CreateDefaultBuilder a generic Host builder in .NET and ASP.NET Core plays an important role in initializing the Host and its configuration like getting access to applications host details including app configuration, logger configuration, user secretes, getting access to environmental configuration etc.

var builder = Host.CreateDefaultBuilder().Build();

Let see in detail how CreateDefaultBuilder helps us managing all the above details.

Access to Application Configuration in ASP.NET and NET Core

Please note that when you define your host with CreateDefaultBuilder it loads Application Configuration in ASP.NET Core appsettings.json in ASP.NET Core.

If you are using a non-prod environment like DEV or TEST then such environment-specific configuration details will also be available from appsettings.[EnvironmentName].json

Turning Our App Into A Windows Service



Running our application normally is just the same and everything functions as it was. The big difference is that we can now install everything as a service.

To do that, first we need to publish our application. In the project directory we run :

dotnet publish -r win-x64 -c Release

Note in my case, Iā€™m publishing for Windows X64 which generally is going to be the case when deploying a Windows service.

The below three methods define the lifetime of the services,

The lifetime of the service depends on when the dependency is instantiated and how long it lives. And lifetime depends on how we have registered those services.


Transient lifetime services are created each time they are requested. This lifetime works best for lightweight, stateless services.


Scoped lifetime services are created once per request.


Singleton lifetime services are created the first time they are requested (or when ConfigureServices is run if you specify an instance there) and then every subsequent request will use the same instance.

Discussion (0)