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!