ZetCode

ASP.NET UseRouting

最后修改于 2025 年 4 月 3 日

在本文中,我们将探讨 ASP.NET 8 中的 UseRouting 中间件。此组件是 ASP.NET Core 应用程序中请求路由的基础。

ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。UseRouting 支持终结点路由,这是一个强大的路由系统。

基本定义

UseRouting 是一个将传入的 HTTP 请求与终结点匹配的中间件。通常将其放置在中间件管道的早期,以启用路由。

终结点路由是在 ASP.NET Core 3.0 中引入的,用于替换旧的路由系统。它提供了更好的性能和更高的灵活性。

UseRouting 的工作原理是检查请求并确定哪个终结点应该处理它。它不执行终结点——这发生在管道的稍后阶段。

ASP.NET UseRouting 示例

以下示例演示了一个使用 UseRouting 的基本 ASP.NET 应用程序。

Program.cs
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.UseRouting();

app.UseEndpoints(endpoints =>
{
    endpoints.MapGet("/", async context =>
    {
        await context.Response.WriteAsync("Hello from the root endpoint!");
    });

    endpoints.MapGet("/products", async context =>
    {
        await context.Response.WriteAsync("List of products will be here");
    });

    endpoints.MapGet("/products/{id:int}", async context =>
    {
        var id = context.Request.RouteValues["id"];
        await context.Response.WriteAsync($"Product details for ID: {id}");
    });
});

app.Run();

此示例显示了一个具有三个终结点的最小 ASP.NET 应用程序。UseRouting 调用为应用程序启用了路由系统。

UseEndpoints 中间件是我们定义终结点的地方。每个 MapGet 调用都会创建一个响应 HTTP GET 请求的路由。

第一个终结点处理根路径 ("/") 的请求。第二个处理 "/products"。第三个展示了带 "{id:int}" 的路由参数绑定。

路由参数 "{id:int}" 包含一个路由约束,该约束确保 id 参数必须可以转换为整数。这提供了内置验证。

请注意,UseRouting 必须放在 UseEndpoints 之前。这种顺序对于路由系统正确工作至关重要。

来源

Microsoft ASP.NET Core 路由文档

在本文中,我们探讨了 ASP.NET 8 中的 UseRouting 中间件。这个必不可少的组件为 Web 应用程序提供了强大的请求路由功能。

作者

我的名字是 Jan Bodnar,我是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。至今,我已撰写了 1,400 多篇文章和 8 本电子书。我在教学编程方面拥有十多年的经验。

列出所有 ASP.NET 教程