構成内のルーティング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 / [制御] / [行動]")]を添加しなければなりません