Content Negotiation in Dotnet Core Webapi

Content Negotiation in Dotnet Core Webapi

As defined in rfc2616 - “Content nagotiation is the process of selecting the best representation for a given response when there are multiple representations available.”

Clients passes the header Accept with values like application/json,application/xml etc and tells this format is acceptable. Then server gives the response according to that.

In simpler terms, if your API supports xml, json and csv media type, then let clients decide which kind of media type they need as a response.

[Read More]

Containerizing Dotnet App With PostgreSql Using Docker Compose

Containerizing Dotnet App With PostgreSql Using Docker Compose

In this tutorial, we are going to containerize the .NET Web API application with docker and postgres. I am assuming you are familiar with docker. At least, you should have some understandings of how docker works. However, I have covered all the steps needed to create a docker container for your application, but I am not going to cover the theoretical concepts of docker.

📢Last updated : 21-Nov-2025

[Read More]

Containerizing Dotnet App With Sql Server Using Docker Compose

Containerizing Dotnet App With Sql Server Using Docker Compose

In this tutorial, we are going to containerize the .NET Web API application with docker. I am assuming you are familiar with docker. At least, you should have some understandings of how docker works. However, I have covered all the steps needed to create a docker container for your application, but I am not going to cover the theoretical concepts of docker.

Last updated on:

  • 20-November-2025

🔨Tools needed

  • Visual Studio Code (Free)
  • .Net 10.0 SDK (Free)
  • Docker desktop (Free)

🧑‍💻Tech used

  • .Net 10.0 Web APIs (controller APIs)
  • Ms SQL Server 2025 (within a container)
  • Docker compose

🍵Note: I am using windows 11 operating system. However, I also have tested it in the Linux mint xia and it is working fine.

[Read More]

Fastapi CRUD With Postgres

Fastapi CRUD  With Postgres

In this tutorial we learn to create REST Apis with fastapi. We are going to use:

  • FastApi for creating APIs
  • PostgreSQL as a database
  • SQLAlchemy as an ORM tool
  • Alembic as a migration tool

Tech and tools used

  • Linux os (you can use window or mac also. But with windows your commands might be a little different. I suggest you to use GitBash in windows)
  • I am using uv to create project, you can download it from here
  • Python 3.12
  • VS Code (code editor) with extension Python by microsoft
  • PostgreSQL (I am using it in a docker container, you can use installed version too)

The reason I am using uv, because it is pretty fast and I can easily manage dependencies with it.

[Read More]

Azure Key Vault With Dotnet

Azure Key Vault With Dotnet

First of all, let’s see what are we going to achieve? Let’s say we have an dotnet 9 api application.

Its appsettings.json looks like:

 "Color": "Color from appsettings",
 "Person": {
   "Name": "Name from appsettings"
 }

Let’s try to retrieve these values:

app.MapGet("/", (IConfiguration config) =>
{
    string color = config.GetSection("Color").Value ?? "No color";
    string name = config.GetSection("Person:Name").Value ?? "No name";
    return Results.Ok(new
    {
        color,
        name,
        message = "Hello there..."
    });
});

If you visit this endpoint, you will see this output:

[Read More]

Azure App Configuration With Dotnet(C#)

Azure App Configuration With Dotnet(C#)
  • Azure App Configuration is a fully managed service, which provides you a way to store the configurations in a centralized store. You can store configurations of multiple apps in a single place.
  • It is really helpful for cloud native application (eg. Microservices), which runs on multiple virtual machines and use multiple external services.
  • It allows us to store Key-value pairs, manage feature flags, and organize configurations using labels and namespaces.
  • The main benefit is, it supports dynamic refreshing. Which means, you can change config values without restarting the app.
  • You can also add reference of azure key vault secret here.

Let’s see these things in action.

[Read More]

Azure Blob Storage : CRUD With AspNetCore Mvc & SQL Server

Azure Blob Storage : CRUD With AspNetCore Mvc & SQL Server

Azure blob storage is a storage solution provided by microsoft. You can store data like images, audio, video, json files, zip files etc etc in the azure.

What are we going to learn?

  • How to create a web application that stores and manipulate the images in the cloud.
  • We will perform all the CRUD (create, read, update and delete) operations.

Tech used

  • .NET Core 9 (MVC app)
  • SQL server 2022
  • Azure storage account

High level overview

  • We will save image url in the database and images in the storage account(blob container)

Let’s create an storage account first

Step 1: create azure storage account 1

[Read More]

Cosmos DB For NoSQL - CRUD With Dotnet

Cosmos DB For NoSQL - CRUD With Dotnet

Azure Cosmos DB for NoSQL is a fully managed and serverless NoSQL and vector database for modern app development, including AI applications and agents. With its SLA-backed speed and availability as well as instant dynamic scalability, it is ideal for real-time NoSQL applications that require high performance and distributed computing over massive volumes of NoSQL and vector data.

Soruce: learn.microsoft.com, you can learn more about it from here

[Read More]

Asynchronous Programming in C# - Comparing it with multi-threading

Asynchronous Programming in C# - Comparing it with multi-threading

Asynchronous task is a non-blocking task. Main thread goes back to the thread pool (and free to do other tasks) when it reaches to await – and new thread is assigned when wait is complete.

It is different from the multi-threading. In multi-threding, task is divided between multiple threads. Cores of your CPU are utilized.

Analogy

Let’s say you have some chores like:

  1. Boiling eggs 🫕 (or sweet potatoes🍠🍠 if you dont eat eggs 🥚🥚)
  2. Clean 🧹🪣 the house

There are multiple ways to achieve this:

[Read More]

Inversion of Control - Dependency Injection - Dependency Inversion Principle

Inversion of Control - Dependency Injection - Dependency Inversion Principle
  • Direct or traditional approach: Object creates its own dependencies.

  • Inverted approach (inversion of control): Dependencies are created outside the object. This responsibility is given to someone else.

Example 1 (Direct approach):

We have a service named EmailService which is an implementation of INotificationService.

public interface INotificationService
{
    void SendNotification();
}

public class EmailService : INotificationService
{
    public void SendNotification()
    {
        // code to send notification 
    }
}

OrderService need to use the INotificationService.

[Read More]