目次

ASP.NET アプリケーションの Program.cs で "ASP0014: Suggest using top level route registrations" が表示される

目次

ダーパン
質問: ASP0014のアラート
ASP.NET のProgram.cs で、 "ASP0014: Suggest using top level route registrations" が表示されるようになってしまいました。 どのように対処するのが良いでしょうか?

原因

ASP0014 は、UseEndpoints(...) の中で行っているルート登録を、 app.MapGet(...) や app.MapControllerRoute(...) のようにアプリケーション直下へ移動することを勧める警告です。
従来は UseRouting と UseEndpoints を組み合わせる構成が一般的でしたが、Minimal Hosting モデルではより簡潔にトップレベルでルートを登録する書き方が推奨されています。

対処法

endpoints.MapGet() endpoints.MapPost() メソッドを app.MapGet() app.MapPost() メソッドに変更します。

変更前
app.UseRouting();

app.UseEndpoints(endpoints =>
{
    endpoints.MapGet("/hello", async context =>
    {
        await context.Response.WriteAsync("Hello World!");
    });

    endpoints.MapPost("/api/data", async context =>
    {
        await context.Response.WriteAsync("OK");
    });
});

app.MapRazorPages();


app.MapGet() や app.MapRazorPages() などのトップレベルルート登録を使う場合、フレームワークが内部的に UseRouting() を自動追加するため、app.UseRouting(); は不要になります。 ただし、UseRouting() の前後でミドルウェアの動作を分けたい場合は明示的に書く意味があります。

変更後
app.MapGet("/hello", async context =>
{
    await context.Response.WriteAsync("Hello World!");
});

app.MapPost("/api/data", async context =>
{
    await context.Response.WriteAsync("OK");
});

app.MapRazorPages();

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2026-03-22