What are middleware and how do you create custom middleware?

๐Ÿ’ก Concept: Middleware in ASP.NET Core

Middleware are components in the HTTP request pipeline that process requests and responses.

๐Ÿ“˜ Quick Intro

Middleware components execute in a sequence and can handle, modify, or short-circuit requests.

๐Ÿง  Analogy

Like an assembly line where each station performs a specific task on the product.

๐Ÿ”ง Technical Explanation

  • Middleware are classes with an Invoke or InvokeAsync method.
  • They have access to HttpContext and the next middleware.
  • Registered in Startup.cs via IApplicationBuilder.
  • Can perform actions before and after calling the next middleware.
  • Enable cross-cutting concerns like logging, authentication, error handling.

๐ŸŽฏ Use Cases

  • โœ… Authentication and authorization.
  • โœ… Logging and diagnostics.
  • โœ… Custom error handling.
  • โœ… Response compression and caching.

๐Ÿ’ป Code Example


// Custom middleware example
public class CustomMiddleware {
    private readonly RequestDelegate _next;

    public CustomMiddleware(RequestDelegate next) {
        _next = next;
    }

    public async Task InvokeAsync(HttpContext context) {
        // Logic before next middleware
        await context.Response.WriteAsync(""Before next middleware\n"");

        await _next(context);

        // Logic after next middleware
        await context.Response.WriteAsync(""After next middleware\n"");
    }
}

// Register in Startup.cs
public void Configure(IApplicationBuilder app) {
    app.UseMiddleware();
    // other middleware
}

โ“ Interview Q&A

Q1: What is middleware?
A: Software components that handle HTTP requests and responses.

Q2: How do you create custom middleware?
A: Create a class with Invoke or InvokeAsync method and register it.

Q3: What is the order of middleware execution?
A: Middleware executes in the order registered.

Q4: Can middleware short-circuit requests?
A: Yes, by not calling the next middleware.

Q5: What is the use of next middleware delegate?
A: To call the next middleware in the pipeline.

Q6: Can middleware modify responses?
A: Yes.

Q7: Where do you register middleware?
A: In Startup.cs Configure method.

Q8: What are some built-in middleware?
A: Authentication, Static Files, Routing.

Q9: Is middleware pipeline configurable?
A: Yes.

Q10: Can middleware be asynchronous?
A: Yes.

๐Ÿ“ MCQs

Q1. What is middleware?

  • Software handling HTTP requests
  • Database service
  • UI component
  • Background task

Q2. How do you create custom middleware?

  • Using filters
  • Class with Invoke method
  • Middleware attribute
  • Static class

Q3. What controls middleware order?

  • Alphabetical
  • Registration order
  • Random
  • Priority attribute

Q4. Can middleware short-circuit requests?

  • No
  • Yes
  • Sometimes
  • Never

Q5. What does next middleware do?

  • Stops pipeline
  • Calls next component
  • Restarts pipeline
  • Ignores request

Q6. Can middleware modify response?

  • No
  • Yes
  • Sometimes
  • Never

Q7. Where to register middleware?

  • Program.cs
  • Startup.cs Configure
  • Controllers
  • Middleware folder

Q8. Name built-in middleware

  • Authentication, Routing
  • Logging, Caching
  • Validation, Filters
  • Services, Repositories

Q9. Is middleware pipeline configurable?

  • No
  • Yes
  • Maybe
  • Rarely

Q10. Can middleware be async?

  • No
  • Yes
  • Sometimes
  • Never

๐Ÿ’ก Bonus Insight

Middleware provides a powerful way to customize and control the HTTP request pipeline in ASP.NET Core.

๐Ÿ“„ PDF Download

Need a handy summary for your notes? Download this topic as a PDF!

๐Ÿ” Navigation

Learn More About C# ๐Ÿ“š

1. What is C#? ๐Ÿ‘‰ Explained
2. Main Features of C# ๐Ÿ‘‰ Explained
3. Difference Between C# and Java ๐Ÿ‘‰ Explained
4. Common Language Runtime (CLR) in C# ๐Ÿ‘‰ Explained
5. Common Type System (CTS) in C# ๐Ÿ‘‰ Explained
6. Common Language Specification (CLS) in C# ๐Ÿ‘‰ Explained
7. Value Types vs Reference Types in C# ๐Ÿ‘‰ Explained
8. What is a Namespace in C#? ๐Ÿ‘‰ Explained
9. Purpose of the 'using' Keyword in C# ๐Ÿ‘‰ Explained
10. Different Data Types in C# ๐Ÿ‘‰ Explained
11. Difference Between int and Int32 in C# ๐Ÿ‘‰ Explained
12. Difference Between float, double, and decimal in C# ๐Ÿ‘‰ Explained
13. What is the Default Value of a Boolean in C#? ๐Ÿ‘‰ Explained
14. What is Boxing and Unboxing in C# ๐Ÿ‘‰ Explained
15. What are the Different Types of Operators in C# ๐Ÿ‘‰ Explained
16. Difference Between Equals and == in C# ๐Ÿ‘‰ Explained
17. What is the Null-Coalescing Operator ?? in C# ๐Ÿ‘‰ Explained
18. What is the Ternary Operator in C# ๐Ÿ‘‰ Explained
19. How Does the Switch Statement Work in C# ๐Ÿ‘‰ Explained
20. What is Object-Oriented Programming in C# ๐Ÿ‘‰ Explained
21. What are the Four Pillars of OOP in C# ๐Ÿ‘‰ Explained
22. What is Encapsulation in C# ๐Ÿ‘‰ Explained
23. What is Inheritance in C# ๐Ÿ‘‰ Explained
24. What is Polymorphism in C# ๐Ÿ‘‰ Explained
25. What is Abstraction in C# ๐Ÿ‘‰ Explained
26. What is an Abstract Class in C# ๐Ÿ‘‰ Explained
27. What is an Interface in C# ๐Ÿ‘‰ Explained
28. Can a Class Implement Multiple Interfaces in C#? ๐Ÿ‘‰ Explained
29. Difference Between Abstract Class and Interface in C# ๐Ÿ‘‰ Explained
30. How Do You Create a Class in C#? ๐Ÿ‘‰ Explained
31. What is a Constructor in C# ๐Ÿ‘‰ Explained
32. What Are the Types of Constructors in C# ๐Ÿ‘‰ Explained
33. What is a Static Constructor in C# ๐Ÿ‘‰ Explained
34. Difference Between Static and Non-Static Members in C# ๐Ÿ‘‰ Explained
35. What is the Use of 'this' Keyword in C# ๐Ÿ‘‰ Explained
36. What is a Destructor in C# ๐Ÿ‘‰ Explained
37. What is Object Initializer Syntax in C# ๐Ÿ‘‰ Explained
38. What is the Difference Between Field and Property in C# ๐Ÿ‘‰ Explained
Share:

Tags:


Feedback Modal Popup