.NET 6中UseRouting与UseEndPoints缺失及路由配置方式咨询
.NET 6 路由配置新结构与.NET 5→6更新说明
一、Program.cs与Startup.cs合并的核心变化
.NET 6 引入顶级语句和最小API模板,直接把原Startup.cs里的服务配置(ConfigureServices)、中间件/路由配置(Configure)逻辑整合到Program.cs中,省去了冗余的命名空间、类定义和Main方法,代码更精简。
二、路由配置的新工作方式
你提到的UseRouting()和UseEndPoints()并没有被移除,而是在默认模板中被隐式处理了:
- 最小API场景(默认模板)
直接通过app.MapGet()、app.MapPost()等方法定义路由和端点逻辑,底层自动包含路由匹配与端点映射的完整流程:var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); // 直接配置路由端点 app.MapGet("/", () => "Hello World!"); app.MapGet("/api/users/{id}", (int id) => $"User ID: {id}"); app.Run(); - 兼容.NET 5的显式写法
如果需要自定义中间件顺序或更精细的路由控制,依然可以手动调用UseRouting()和UseEndPoints(),写法和.NET 5完全兼容:var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); // 显式启用路由匹配 app.UseRouting(); // 自定义端点映射 app.UseEndpoints(endpoints => { endpoints.MapControllers(); // 映射控制器路由 endpoints.MapGet("/", context => context.Response.WriteAsync("Hello World!")); }); app.Run();
三、.NET 5到.NET 6的关键更新点
- 顶级语句:Program.cs无需再写命名空间、Program类和Main方法,代码直接从变量定义开始
- 最小API:针对轻量级Web服务场景,无需创建控制器,直接通过
MapXXX快速定义路由和业务逻辑 - 隐式中间件集成:WebApplication默认自动注入常用中间件(包括路由、静态文件等),无需手动调用
UseRouting、UseStaticFiles等(特殊场景可手动添加) - Startup逻辑整合:原
Startup.ConfigureServices的内容迁移到builder.Services配置,原Startup.Configure的中间件/路由逻辑直接写在app对象上
内容的提问来源于stack exchange,提问作者Nadia akrach
相关产品推荐
相关产品推荐

