asp.netCore3.0エリアとルーティング設定について

 構成内のルーティングASP.NETコア3.0及び2.0は同じではありません

、MVC登録サービス

ASP.NETコア3.0は、内部Startup.ConfigureServices登録MVCプログラムのための新しいオプションが追加されます。
利用可能MVCプログラムIServiceCollection上に3つの新しいトップレベルの拡張メソッド。テンプレートではなくUseMvcよりも、これらの新しいメソッドを使用して。それがあったようにしかし、AddMvcは、以前のバージョンで継続します。
次の例では、コントローラの関連する機能やAPIが追加されますが、ビューまたはページによってサポートされていません。このコードを使用したAPIテンプレート:

公共 のボイドConfigureServices(IServiceCollectionサービス)
{ 
    services.AddControllers(); 
}


次の例では、コントローラのサポート関連のAPI関数、およびビューではなく、ページを追加します。Webアプリケーションのコードを使用して(MVC)テンプレート:

公共 のボイドConfigureServices(IServiceCollectionサービス)
{ 
    services.AddControllersWithViews(); 
}

次の例は、カミソリページと最小のコントローラのサポートをサポートして追加します。Webアプリケーションテンプレートは、このコードを使用します。

公共 のボイドConfigureServices(IServiceCollectionサービス)
{ 
    services.AddRazorPages(); 
}

さらに新しい方法を組み合わせてもよいです。次の例では、AddMvcASP.NETコア2.2を呼び出すのと同じです。

公共 のボイドConfigureServices(IServiceCollectionサービス)
{ 
    services.AddControllers(); 
    services.AddRazorPages(); 
}

二、Startup.Configure設定

一般的にはお勧めしません:
UseRoutingを追加します。
UseRoutingもしアプリケーションがUseStaticFilesを呼び出す前に、UseStaticFilesを置きました。
アプリケーションは、このようなAuthorizePageまたは[承認]、意志UseAuthenticationとUseAuthorizationなどの認証/認可機能を使用する場合UseRouting。
アプリケーションは、[EnableCors]、配置次UseCorsとして、CORS機能を使用する場合。
UseMvcまたはUseSignalRとUseEndpointsを交換してください。
以下はStartup.Configure、一般的なASP.NETコア2.2アプリケーションです。

公共 ボイド設定(IApplicationBuilderアプリ)
{ 
    ... 

    app.UseStaticFiles(); 
    
    app.UseAuthentication(); 

    app.UseSignalR(ハブ => 
    { 
        hubs.MapHub <ChatHub>(" /チャット" ); 
    }); 

    app.UseMvc(ルート => 
    { 
        routes.MapRoute(" デフォルト"" {コントローラ=ホーム} / {アクション=ランキング} / {ID}?" ); 
    }); 
}

 

コントローラは現在のマッピングUseEndpoints内で行われます。

プロパティのルートを使用してアプリケーション場合MapControllersを追加します。ルートは、多くのASP.NETコアフレームワークバージョン3.0以上のサポートが含まれているように、コントローラが参加する属性ルートを追加します。

:私たちは、次のようになります
MapRouteがMapControllerRoute使用
MapAreaControllerRouteを使用MapAreaRouteを
ルートは今ちょうどMVCのサポート以上のものを含み、かつ明確に彼らがしたと言うことが、これらの方法の条件を変更されたため。従来のルーティングMapControllerRoute / MapAreaControllerRoute / MapDefaultControllerRouteシーケンシャルアプリケーションは、追加されます。具体的には、第一の経路(例えば、ルーティングエリア)。
以下の例:
MapControllersは、経路制御の属性のサポートを追加しました。
MapAreaControllerRouteは、伝統的なルーティングエリア制御を追加しました。
従来の経路制御を追加MapControllerRoute。

UseEndpointsは今マッピングカミソリページ内で行われます。
アプリケーションは、カミソリのページを使用している場合MapRazorPagesを追加します。エンドポイントのルートは多くのフレームワークのサポートが含まれているのでカミソリのページを追加し、今参加しています。

Startup.Configureコードでasp.netCore3.0を更新した後: 

 公共 ボイド設定(IApplicationBuilderアプリ、IWebHostEnvironmentのENV)
        { 
            場合(env.IsDevelopment())
            { 
                app.UseDeveloperExceptionPage()。
            } 
            
            { 
                app.UseExceptionHandler(" /ホーム/エラー" );
                // デフォルトHSTS値は30日です。あなたが見る、生産シナリオのためにこれを変更することがありhttps://aka.ms/aspnetcore-hstsを。
                app.UseHsts(); 
            } 

            app.UseHttpsRedirection()。
            app.UseStaticFiles();

            app.UseCookiePolicy(); 

            app.UseRouting(); 

            app.UseAuthorization(); app.UseEndpoints(エンドポイント

            => 
            { 
                endpoints.MapControllerRoute(
                    名称: "デフォルト"、
                    パターン: "?{コントローラ=ホーム} / {アクションは=ランキング} / {ID}"); 

                endpoints.MapAreaControllerRoute(
                    名称: "エリア"、 "領域"、
                    パターン"{面積:存在} / {コントローラ=ホーム} / {アクション=ランキング} / {?ID}" ); 
                endpoints.MapRazorPages(); 
            }); 
        }

あなたがルートを分割したい場合は、まずコントローラ・エリアおよびルートのタグを追加する必要があり、または自動ルーティングとasp.netCore2.0でアクションコントローラのように、することはできません。次のようにサンプル・コードは次のとおりです。

名前空間のWebApplication1.Areas.CMS.Controllers 
{ [エリア(
    "CMS")] 
    [ルート( "CMS / [コントローラ] / [アクション]")] 
    パブリック クラスNewsController:コントローラー
    { 
        公共IActionResult指数()
        { 
            戻ります(ビュー)。
        } 
        公共IActionResultリスト()
        { 
            戻り(ビュー)。
        } 
    } 
}
これら二つは、[エリア( "CMS")]、[ルート( "CMS / [制御] / [行動]")]を添加しなければなりません

 

おすすめ

転載: www.cnblogs.com/cqinwn/p/10931973.html