public void Configure(IApplicationBuilder app)
{
// 使用自定义的MapWhen方法来处理特定条件下的路由
app.UseMvc(routes =>
{
// 当请求的URL以"/api/"开头时,应用API路由规则
routes.MapWhen(ctx => ctx.Request.Path.StartsWithSegments(new PathString("/api")), apiRoutes =>
{
// 在这里定义API的路由规则
apiRoutes.MapRoute(
name: "DefaultApi",
template: "api/{controller}/{id?}",
defaults: new { controller = "Home", action = "Index" }
);
});
// 当请求的URL不以"/api/"开头时,应用MVC路由规则
routes.MapWhen(ctx => !ctx.Request.Path.StartsWithSegments(new PathString("/api")), mvcRoutes =>
{
// 在这里定义MVC的路由规则
mvcRoutes.MapRoute(
name: "Default",
template: "{controller=Home}/{action=Index}/{id?}");
});
});
}
这个代码示例展示了如何在ASP.NET Core MVC应用程序中使用MapWhen
方法来根据请求的URL来应用不同的路由规则。这是一个非常实用的技巧,可以帮助开发者根据应用程序的需求来灵活定义路由。