The Configure method builds the app's HTTP request pipeline by adding middleware components one after another. Requests pass through the middleware in the order it was added, and responses pass back in reverse order, so that order matters.
The runtime passes in an IApplicationBuilder, and each Use... call adds a component. Other services, such as IWebHostEnvironment, can be added as extra parameters, which lets the pipeline differ between Development and Production.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
else
app.UseExceptionHandler("/Home/Error");
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
Here the exception handler comes first, so it catches errors from everything after it. Authentication runs before authorization, and both sit between routing and endpoints. In .NET 6 and later, these calls follow builder.Build() in Program.cs instead.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓