如何在 ASP.NET Core 3.1 MVC 中进行自定义路由

How to do custom routing in ASP.NET Core 3.1 MVC

我不能像 .NET Core 2.2 那样在 .NET Core 3.1 中使用简单路由。

.NET Core 3.1 中路由的最后变化是什么?

在 .NET 3 中,您应该使用 Endpoint 而不是 Routing

app.UseStaticFiles();
app.UseRouting();
//other middleware

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
    endpoints.MapRazorPages();
    endpoints.MapHub<MyChatHub>();
    endpoints.MapGrpcService<MyCalculatorService>();
    endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
});

除了 Endpoint 之外,您还可以使用属性路由,或将两者结合使用。

[Route("my/")]
public class MyController : Controller

[HttpGet]
[AllowAnonymous]
[Route("")] //prefer this if we asked for this action
[Route("index", Order = 1)]
[Route("default.aspx", Order = 100)] // legacy might as well get an order of 100
public async Task<IActionResult> GetIndex()
{
}

有了控制器的上述属性,就不需要为这个控制器指定MapControllerRoute了。在此示例中,该操作具有三个路由。