web-dev-qa-db-ja.com

ASP.NET Core 3.1 MVCでカスタムルーティングを行う方法

.NET Core 3.1の.NET Core 2.2のような単純なルーティングは使用できません。

.NET Core 3.1のルーティングの最後の変更は何ですか?

1
LPLN

.NET 3では、Routingの代わりにEndpointを使用する必要があります

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

エンドポイントの隣では、属性ルーティングを使用することも、2つを組み合わせることもできます。

[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を指定する必要はありません。この例では、アクションには3つのルートがあります。

1