web-dev-qa-db-fra.com

Comment faire un routage personnalisé dans ASP.NET Core 3.1 MVC

Je ne peux pas utiliser un routage simple comme dans .NET Core 2.2 dans .NET Core 3.1.

Quelle est la dernière modification de routage dans .NET Core 3.1?

1
LPLN

Dans .NET 3, vous devez utiliser Endpoint au lieu de 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?}");
});
7
Hamed Hajiloo

À côté de Endpoint, vous pouvez également utiliser le routage d'attributs ou combiner les deux.

[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()
{
}

Avec l'attribut ci-dessus pour le contrôleur, vous n'avez pas besoin de spécifier MapControllerRoute pour ce contrôleur. L'action comporte trois itinéraires dans cet exemple.

1
Pieter van Kampen