JavaScript Required

We're sorry, but we doesn't work properly without JavaScript enabled.

Looking for an Expert Development Team? Take two weeks Trial! Try Now

Health Check Middleware in .NET Core 3.1

Agenda: In this article, we will learn about the in-built health check middleware that .net core provides out of the box. With the help of demo by .Net development company India, we will see that how we can check the database connection health using SQL Server extension method.

Pre-requisite:

  • Visual Studio 2019 with .NET Core installed
  • Some basic knowledge of .NET Core Middlewares

.NET Core provided out of the box middleware which can check the health of the different components of the application. These health checks are exposed with the help of an endpoint, which can be configured to monitor live application.

Health checks can be helpful to check:

  • The server traffics
  • The database connectivity and response
  • Disk utilization

The Microsoft.AspNetCore.Diagnostics.HealthChecks package is referenced implicitly for ASP.NET Core apps.

The package AspNetCore.HealthChecks.SqlServer is used to check the health of the Sql Server Database.

There are three types of HealthStatus that are returned back to the monitoring service which uses the health check.

  • Degraded - Indicates that the component was in a degraded state.
  • Healthy - Indicates that the component was healthy.
  • Unhealthy - Indicates that the component was unhealthy, or an unhandled exception was thrown while executing the health check.

Let’s do the demo to see all the action.

  • Step 1 Open Visual Studio 2019 and create a new .NET Core Web API project.

    HCM1
    HCM2
    HCM3
    HCM4
  • Step 2 Once the project is created, test it by pressing F5 to run it in debug mode and you should see the following output.

    HCM5
  • Step 3 Now our API template generated by Visual Studio is working fine. So let’s add the following packages to the project using Nuget package manager.

    Right click on the solution explorer project name and select the nuget package library option as shown below.

    HCM6
  • Step 4 Now search the required packages and install them.

    HCM7
    HCM8
  • Step 5 Let’s add the Health Check service to the .NET Core pipeline. Go to Startup.cs file and make the following highlighted changes.

    HCM9

    As shown in the screenshot above, you can see that AddHealthChecks() method is derived from the Nuget package that we installed.

  • Step 6 Let’s define an endpoint that can be used to check health.

    HCM10

    As you can see in the screenshot above, we added a route with “/health” endpoint so that we can hit this endpoint for testing.

  • Step 7 Since we want to test the sql server database connection, we need to use extension method provided by the second nuget package that we installed. Make the changes to the code that we did in Step 5.

    HCM11

    You can see that we used AddSqlServer extension method and passed a connection string as a parameter.

    In the connection, you must have noticed that a database is mentioned with name “SampleDb”. This is the database that will be tested for connection health.

    But we have not created it yet. So, let’s open SQL Server explorer and create a database with the same name.

  • Step 8 Open Server Explorer window in Visual Studio.

    HCM12
    HCM13

    If your server name is correct, then a new database will be created and will be visible in the server explorer.

    HCM14
  • Step 9 Now we are done with all the configuration and database creation. Let’s run the API by pressing the F5 Key.

    You will notice that weatherForecast API was called. This is because health check endpoint needs to be called explicitly.

  • Step 10 Run the following URL: http://localhost:50566/health

    HCM15

    You can see that it returns Healthy status, which states that database connectivity is working fine.

    Now to double check, let’s delete the database and see what happens.

    I deleted the database by right clicking the database name and delete it.

    Now re-run the API endpoint.

    HCM16

You can see that it returns Unhealthy status because we deleted the database so it is not able to connect to the connection string that we mentioned.

There are a lots of extension methods that Health Check middleware provides, and you can explore more on the google.

Thank you for reading.

Read More:

 
NSS Note

Some of our clients

team