What is ASP.NET Core, and how is it different from ASP.NET MVC 5?
ASP.NET Core is a cross-platform, open-source framework for building modern web
applications, APIs, and microservices. It’s a complete rewrite of the old ASP.NET
framework, designed to be lightweight, modular, and cloud-ready.
Key Differences:
Feature ASP.NET MVC 5 ASP.NET Core
Platform Windows only Cross-platform (Windows, macOS, Linux)
Hosting IIS only Kestrel, IIS, Nginx, Apache, self-hosting
Configuration web.config (XML) appsettings.json (JSON-based)
Dependency Injection Third-party libraries Built-in DI container
Modularity Monolithic Modular via NuGet packages
Example:
In ASP.NET MVC 5, you’d deploy only to IIS on Windows. In ASP.NET Core, the same app
can run on a Linux server using Nginx + Kestrel — perfect for Docker or cloud
environments.
⚙ 2. Explain the request-processing pipeline in
ASP.NET Core.
ASP.NET Core handles incoming requests through a middleware pipeline. Each
middleware can process, modify, or short-circuit requests before they reach the endpoint.
Flow Example:
Request → Middleware 1 (Logging)
→ Middleware 2 (Authentication)
→ Middleware 3 (Routing)
→ Controller / Endpoint
→ Response → Back through pipeline
Follow :
Example:
If you log requests, check authentication, and handle static files — they execute in the order
you add them in Program.cs.
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
🧱 3. What is Kestrel?
Kestrel is a cross-platform web server built into ASP.NET Core. It’s fast, lightweight, and
serves as the default web server. You can run it standalone or behind a reverse proxy like
IIS or Nginx.
Real Example:
When you run dotnet run, your app listens on
— that’s
Kestrel serving your app.
🖥 4. What is the role of IIS when hosting ASP.NET
Core apps?
IIS acts as a reverse proxy. It forwards incoming HTTP requests to the Kestrel server
running your ASP.NET Core app. This setup provides:
- Process management (auto-restart)
- Port sharing (multiple sites)
- Windows authentication
- Logging and monitoring
Follow :
In short: IIS → forwards → Kestrel → runs the app.
🚀 5. What is the Startup class used for?
The Startup class defines how your app configures services (DI, authentication, etc.)
and sets up middleware (routing, static files, error pages, etc.).
Example:
public class Startup
public void ConfigureServices(IServiceCollection services)
services.AddControllers();
public void Configure(IApplicationBuilder app)
app.UseRouting();
app.UseEndpoints(endpoints => endpoints.MapControllers());
🧭 6. Explain the purpose of Program.cs in .NET 6+.
In .NET 6+, Startup.cs and Program.cs merged into one minimal host configuration
file.
It sets up the web host, configuration, logging, and middleware pipeline.
Example:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
Follow :
app.MapControllers();
app.Run();
It’s simpler, faster, and easier to read.
🔹 7. What is a Minimal API?
Minimal APIs are a lightweight way to build small HTTP APIs without controllers or
attributes. Perfect for microservices.
Example:
var app = WebApplication.Create(args);
app.MapGet("/hello", () => "Hello World!");
app.Run();
This single file can run a full REST endpoint.
🧰 8. What is the WebApplicationBuilder in .NET 6/7/8?
WebApplicationBuilder simplifies creating and configuring a web host. It combines:
- IHostBuilder
- WebHostBuilder
- Configuration
- Services
Example:
var builder = WebApplication.CreateBuilder(args);
Follow :
builder.Services.AddDbContext<AppDbContext>();
builder.Services.AddControllers();
Then you call builder.Build() to create the WebApplication.
🛣 9. How does routing work in ASP.NET Core MVC?
Routing maps incoming URLs to controllers and actions.
ASP.NET Core uses Endpoint Routing to decide which route matches a request.
Example:
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
If the user visits /product/details/5, it maps to:
ProductController → Details(int id = 5).
🏷 10. Difference between Conventional and Attribute
Routing.
Type Definition Example
Conventional
Routing
Routes defined in
Program.cs or
Startup.cs.
{controller=Home}/{action=Ind
ex}/{id?}
Attribute
Routing
Routes defined with
attributes on controller
actions.
[Route("api/products/{id}")]
Example:
[Route("api/[controller]")]
Follow :
public class ProductsController : ControllerBase
[HttpGet("{id}")]
public IActionResult Get(int id) => Ok($"Product {id}");
🧩 11. What is Endpoint Routing?
Endpoint routing separates route matching from execution.
It lets middleware (like authentication) know which endpoint will be executed before it
runs.
Example:
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints => endpoints.MapControllers());
🔄 12. Explain the role of middleware in ASP.NET Core.
Middleware are components that handle requests and responses in a pipeline. Each
can:
- Process requests
- Call the next middleware
- Or short-circuit the pipeline
Example:
A logging middleware that runs before all others:
app.Use(async (context, next) =>
Console.WriteLine("Request: " + context.Request.Path);
Follow :
await next();
});
🕒 13. What is the order of middleware execution?
Middleware execute in the order they’re added in Program.cs.
Response flows in reverse order back up the chain.
Tip:
- Authentication must come before Authorization.
- UseRouting must come before UseEndpoints.
🧩 14. How to create custom middleware?
Example:
public class RequestLoggingMiddleware
private readonly RequestDelegate _next;
public RequestLoggingMiddleware(RequestDelegate next) => _next =
next;
public async Task Invoke(HttpContext context)
Console.WriteLine($"Request for: {context.Request.Path}");
await _next(context);
Register it:
app.UseMiddleware<RequestLoggingMiddleware>();
Follow :
🧱 15. What is the difference between middleware and
filters?
Feature Middleware Filter
Scope Entire app Controller/action level
Runs on Every request MVC actions only
Example Authentication, logging Validation, exception filters
⚒ 16. Explain the IApplicationBuilder interface.
IApplicationBuilder builds the middleware pipeline.
You use it in Startup.Configure() or Program.cs to add middleware via Use, Run,
and Map.
🔀 17. Difference between Use, Run, and Map in
middleware.
Metho
Description Example
Use Adds middleware that can call
the next component.
app.UseMiddleware<Logging>();
Run Terminates the pipeline — no
next middleware.
app.Run(async c => await
c.Response.WriteAsync("End"));
Map Branches pipeline based on
request path.
app.Map("/admin", a =>
a.Run(...));
Follow :
🏗 18. What are Hosting Models in ASP.NET Core
(In-process vs Out-of-process)?
Model Description Performance
In-process App runs inside IIS worker process
(w3wp.exe).
Faster (single
process)
Out-of-proces
IIS acts as reverse proxy to Kestrel. Slight overhead
Example:
For Windows servers, in-process gives best performance. For cross-platform Docker, use
out-of-process.
🌍 19. Explain Web Host vs Generic Host.
Host Type Used For Example
Web Host Web apps (ASP.NET Core ≤ 2.2) WebHost.CreateDefaultBui
lder()
Generic
Host
Any app: web, worker, console (≥ 3.0) Host.CreateDefaultBuilde
r()
Generic Host unifies background tasks, APIs, and services in one model.
⚙ 20. How does configuration binding work in
ASP.NET Core?
ASP.NET Core can automatically bind configuration from:
- appsettings.json
- Environment variables
Follow :
- Command-line arguments
Example:
// appsettings.json
"AppSettings": {
"SiteName": "MyShop",
"Version": "1.0"
// POCO
public class AppSettings
public string SiteName { get; set; }
public string Version { get; set; }
// Program.cs
builder.Services.Configure<AppSettings>(
builder.Configuration.GetSection("AppSettings"));
You can inject IOptions<AppSettings> anywhere.
MVC Architecture & Controllers