This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Comprendre l’ ASP.NET Core Request and Response Pipeline - Part 1: Aperçu et fondement
Wednesday, 28 October 2026
Introduction
L’ ASP.NET Core request and response pipeline is the backbone of every web application built on this framework. La compréhension de la façon dont une demande traverse votre application et comment les réponses sont générées est cruciale pour bâtir des applications Web efficientesM SK2 entretenables , et sécuritaires.
Qu’il s’agisse d’APIs, d’applications Web ou de microservices, le pipeline est toujours là.
NOTE: Il s'agit d'une partie de mes expériences avec l'AI / une façon d'épargner $1000 Code Calude Crédits WebM SK3 J'ai alimenté cet article par un BUNCH de documentsMSC5 ma compréhensionMST6 des questions que j'ai eues pour générer cet articleMst7 C'est fun et remplit une lacune que je n'ai jamais vu remplie ailleursM st10
Qu’est-ce que le pipeline de demande?
À son cœur, le pipeline de demandes ASP, ., NET est une série de composantes qui traitent les demandes HTTP et produisent des réponses HTTP.
Cette architecture est basée sur Modèle de logiciels, où chaque composante ( middlewareM SK2 a une responsabilité spécifique et peut
- Traitement de la demande incombant avant de le transmettre à la composante suivante
- Short-circuit le pipeline en générant immédiatement une réponse
- Processuer la réponse sortante après que la composante suivante a été exécutée
Architecture à haut niveau
Let's visualiser l’architecture complète des pipelines dans ASP.NET Core M SK2
flowchart TB
OS[Operating System and Network TCP IP Socket Layer]
Kestrel[Kestrel Web Server HTTP11 HTTP2 HTTP3 QUIC TLS SSL Termination Connection Management]
Host[Host Layer Application Lifetime Dependency Injection Configuration Logging]
subgraph Middleware_Pipeline [Middleware Pipeline]
EH[Exception Handler Middleware catches exceptions]
HTTPS[HTTPS Redirection Middleware redirects HTTP to HTTPS]
Static[Static Files Middleware serves static content]
Routing[Routing Middleware matches request to endpoint]
AuthN[Authentication Middleware validates identity]
AuthZ[Authorization Middleware validates permissions]
Custom[Custom Middleware app specific logic]
EndpointMW[Endpoint Middleware executes matched endpoint]
end
EndpointExec[Endpoint Execution MVC Controllers and Actions Razor Pages Minimal APIs gRPC SignalR]
Response[Response Generation flows back through middleware]
BackKestrel[Back to Kestrel]
Client[Back to Client]
OS --> Kestrel --> Host --> EH --> HTTPS --> Static --> Routing --> AuthN --> AuthZ --> Custom --> EndpointMW --> EndpointExec --> Response --> BackKestrel --> Client
Request Flow: Un voyage dans le pipeline
Let's suivre une demande HTTP typique lorsqu’elle traverse le pipeline:
1. Layer de réseau
Lorsqu'un client fait une demande à votre application, il arrive sous forme de paquets TCP bruts/IP sur votre serveur . Le réseau du système d'exploitationM SK3 rassemble ces paquet(s) en une demande HTTP complèteMSC4
2. Kestrel Web Server
Kestrel, ASPM SK1NET Core's cross -platform web serverMska4 reçoit la demandeMka5 KestreleM Ska6
- Parse le protocole HTTP (HTTP/1.1, HTTPM SK2 ou HTTP /3)
- Génie la décryption TLS/SSL si HTTPS est utilisé
- Crée un
HttpContextobjet qui représente à la fois la demande et la réponse - Passer le contrôle à l'application's middleware pipeline
3. Layer d'accueil
L'hôte fournit l'environnement d'exécution. It:
- Gestion de la durée de vie de l'application
- Fournit le contenant d'injection de dépendance
- Configuration des approvisionnements et infrastructure d'enregistrement
- Invoque la pipeline de middleware
4. Pipeline Middleware
C'est là que débute la logique de votre application. Chaque composant de middleware:
- Reçoit le
HttpContext - Exécute sa fonction spécifique
- Décide s'il faut appeler le prochain middleware ou short-circuit
- Peut modifier la demande avant de la transmettre à l'avance
- Peut modifier la réponse après qu'elle revienne
5. Exécution du point final
Si la requête passe par tous les middlewares, elle arrive à un point final:
- Une action de contrôle dans MVC
- Un gestionnaire de pages dans Razor Pages
- Un gestionnaire de routes dans les API minimales
- Méthode de service gRPC
- Méthode de centre SignalR
Le point final exécute votre logique commerciale et génère une réponse.
6. Flux de réponse
La réponse est retournée dans le pipeline de middleware en revers:
- Chaque logiciel peut inspecter ou modifier la réponse.
- Les en-têtes sont finalisés
- L'organe de réponse est écrit
- Kestrel envoie la réponse HTTP à nouveau au client
Request/Diagramme de la séquence de réponse
sequenceDiagram
autonumber
participant Client
participant OS as OS/Network
participant Kestrel
participant Host
participant MW as Middleware Pipeline
participant Endpoint as Endpoint Execution
Client->>OS: HTTP request
OS->>Kestrel: Forward request
Kestrel->>Host: Create HttpContext
Host->>MW: Invoke pipeline
MW->>Endpoint: Route matched, execute
Endpoint-->>MW: Response
MW-->>Kestrel: Response after post-processing
Kestrel-->>OS: Send HTTP response
OS-->>Client: Response delivered
Principaux concepts
Contexte Http
L'article 5 de la Loi sur l'immigration et le statut des réfugiés HttpContext est l’objet central du pipeline. Il encapsule:
public abstract class HttpContext
{
// The incoming request
public abstract HttpRequest Request { get; }
// The outgoing response
public abstract HttpResponse Response { get; }
// User identity and authentication
public abstract ClaimsPrincipal User { get; set; }
// Request-scoped services
public abstract IServiceProvider RequestServices { get; set; }
// Connection information
public abstract ConnectionInfo Connection { get; }
// WebSocket support
public abstract WebSocketManager WebSockets { get; }
// Request cancellation
public abstract CancellationToken RequestAborted { get; set; }
// Session state
public abstract ISession Session { get; }
// Generic feature collection
public abstract IFeatureCollection Features { get; }
// And more...
}
Tout ce que vous devez savoir au sujet de la demande actuelle et tout ce dont vous avez besoin pour construire la réponse est accessible par HttpContext.
Moyenware
Middleware est l’élément de base du pipeline.
// Basic middleware signature
public delegate Task RequestDelegate(HttpContext context);
// Middleware can be implemented as a method
app.Use(async (context, next) =>
{
// Do something before the next middleware
Console.WriteLine($"Request: {context.Request.Path}");
// Call the next middleware
await next(context);
// Do something after the next middleware
Console.WriteLine($"Response: {context.Response.StatusCode}");
});
Demande de délégués
Un délégué de demande est une fonction qui peut traiter une demande HTTP.
public delegate Task RequestDelegate(HttpContext context);
Chaque outil de middleware enroule le prochain délégué, créant une chaîne nested of calls.
Un exemple simple
Let's voir une application minimale ASPM SK1NET Core 8 qui démontre le pipeline
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Middleware 1: Logging
app.Use(async (context, next) =>
{
Console.WriteLine($"[{DateTime.UtcNow:yyyy-MM-dd HH:mm:ss}] Request started: {context.Request.Method} {context.Request.Path}");
await next(context);
Console.WriteLine($"[{DateTime.UtcNow:yyyy-MM-dd HH:mm:ss}] Request finished: {context.Response.StatusCode}");
});
// Middleware 2: Custom header
app.Use(async (context, next) =>
{
context.Response.Headers["X-Custom-Header"] = "Hello from middleware!";
await next(context);
});
// Middleware 3: Short-circuit for specific path
app.Use(async (context, next) =>
{
if (context.Request.Path == "/health")
{
context.Response.StatusCode = 200;
await context.Response.WriteAsync("Healthy");
return; // Short-circuit - don't call next()
}
await next(context);
});
// Endpoint
app.MapGet("/", () => "Hello World!");
app.Run();
Lorsque vous visitez http://localhost:5000/, vous 'vous verrezM SK2
Console output:
[2024-01-15 10:30:45] Request started: GET /
[2024-01-15 10:30:45] Request finished: 200
Browser output:
Hello World!
Response headers:
X-Custom-Header: Hello from middleware!
Lorsque vous visitez http://localhost:5000/health:
Console output:
[2024-01-15 10:30:50] Request started: GET /health
[2024-01-15 10:30:50] Request finished: 200
Browser output:
Healthy
Response headers:
X-Custom-Header: Hello from middleware!
Veuillez noter comment le troisième short de middleware, -, a entouré la conduite pour /health path, mais tous les middleware avant qu'il ne soit encore exécuté.
Pourquoi comprendre le pipeline est important?
La compréhension du pipeline est cruciale parce que
Optimisation du rendement: La connaissance de l’ordre d’exécution vous aide à placer les opérations coûteuses comme il se doit et à éviter le travail inutile.
Cross-Concerences en matière de coupe: Middleware est parfait pour la mise en œuvre de l'enregistrement , authentification
Débugging: Lorsqu'il y a quelque chose qui va mal, la compréhension du pipeline vous aide à déterminer où le problème s'est produit
Extensions personnalisées: Vous pouvez créer un outil de middleware personnalisé puissant pour élargir les capacités du cadre.
Sécurité: Il est essentiel de comprendre comment l’authentification et l’autorisation entrent dans le pipeline pour assurer la sécurité de votre demande .
Qu’est-ce que's Suivant?
Dans la première partie, nous avons établi les fondements de ce pipeline en sachant ce que c’est le pipeline, comment il est structuré, , et comment les demandes s’y déroulent.
Dans les prochaines parties de cette série, nous plongons profondément dans chaque couche.
Partie 2: Server et couche d'hébergement - Nous ' allons explorer la configuration Kestrel, démarrage de l’hôteM SK3 et comment adapter le milieu d’accueilMSC4
Pièce 3: Middleware Pipeline - Nous ' examinerons les produits fabriqués- dans le logiciel de middlewareM SK3 apprendreons à créer des logiciels de middlewar personnalisés, et comprendreons l’ordonnancement du matériel de middleworkMSC5
Partie 4: Routing and Endpoints - Nous ' découvrerons comment les demandes sont attribuées aux points de départ et comment fonctionne le système d'acheminement des points de destination.
Partie 5: MVCM SK1 Pages de razor, et API minimales - Nous ' étudierons comment les différents modèles d’application s’appliquent dans le pipeline.
Partie 6: Hooks de pipeline avancés - Nous ' apprendrons sur les points d’extension avancés comme
IStartupFilter,IHostedService, et sources de données finales personnalisées
Key Takeaways
- Le pipeline ASP.NET Core est une chaîne de composants méditerranéens qui traitent les demandes et génèrent des réponses.
- Middleware peut traiter les demandes, courte-circuiter le pipeline , et modifier les réponses
HttpContextest l'objet central contenant toutes les informations relatives à la demande et à la réponse.- La compréhension du pipeline est essentielle pour construire des applications efficaces, sûres et durables
- Le pipeline s'achemine de la couche du serveur à l'aide d'outils de middleware vers les points finals et retour
Le pipeline est élégant dans sa simplicité, mais puissant dans ses capacités.