ASP.NET UseEndpoints
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨 ASP.NET 8 中的 UseEndpoints 中间件。这一强大功能是现代 ASP.NET 应用程序中路由和终结点配置的核心。
ASP.NET Core 在 3.0 版本中引入了终结点路由,UseEndpoints 成为了定义请求处理管道的主要方式。它提供了对路由和终结点执行的精细控制。
基本定义
UseEndpoints 是 ASP.NET Core 中的一个中间件组件,它定义了应用程序的请求处理管道。所有路由和终结点都在这里配置。
此中间件取代了旧的 UseMvc 方法,并提供了更好的性能和灵活性。它支持约定路由和属性路由模式。
UseEndpoints 与终结点路由配合使用,后者将路由匹配与终结点执行分开。这使得中间件可以根据匹配到的路由做出决策。
该中间件通常添加到中间件管道的末尾。它使用 lambda 表达式来定义路由模式及其对应的处理程序。
ASP.NET UseEndpoints 示例
以下示例演示了一个基本的 ASP.NET 应用程序,它使用 UseEndpoints 处理各种路由场景。
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.UseRouting(); app.UseEndpoints(endpoints => { // Simple GET endpoint endpoints.MapGet("/", async context => { await context.Response.WriteAsync("Welcome to our ASP.NET 8 application!"); }); // Route with parameter endpoints.MapGet("/greet/{name}", async context => { var name = context.Request.RouteValues["name"]; await context.Response.WriteAsync($"Hello, {name}!"); }); // Conventional MVC-style routing endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); // Minimal API endpoint endpoints.MapGet("/products", async context => { var products = new[] { "Laptop", "Mouse", "Keyboard" }; await context.Response.WriteAsJsonAsync(products); }); }); app.Run();
此示例展示了使用 UseEndpoints 进行的四种不同的终结点配置。第一个是简单的根终结点,它返回一个欢迎消息。
第二个终结点演示了路由参数,它从 URL 中提取名称。第三个展示了用于控制器的传统 MVC 路由。
第四个终结点是一个最小化 API 示例,它返回 JSON 数据。所有这些终结点都在 UseEndpoints 中间件块中配置。
请注意,必须在调用 UseEndpoints 之前调用 UseRouting。UseRouting 执行路由匹配,而 UseEndpoints 执行匹配到的终结点。
这种方法提供了所有应用程序路由的集中配置。它支持各种终结点类型,包括 MVC 控制器、Razor Pages 和最小化 API。
来源
在本文中,我们探讨了 ASP.NET 8 中的 UseEndpoints 中间件。这个关键组件为现代 Web 应用程序提供了灵活的路由配置。