(B)予備はDOTNETコアMVCルーティング

数日を脇に置き、忙しい混乱、最終的には今日の時間を取ることはMVCの知識を見て続行します。MVCルーティングの処理方法で見てみましょう。以下は、代替ルートです。

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

Configureメソッドのデリゲートを通じて実行時に、登録フォーム。

UseEndpoints ミドルウェアはIApplicationBuilderに追加され、このメソッドを呼び出して、あなたはUseRoutingを呼び出す必要があります。

公共の 静的 IApplicationBuilder UseRouting(このIApplicationBuilderビルダー)
{ 
    場合(ビルダー== nullの
    { 
        スロー 新しい例外ArgumentNullException(がNameOf(ビルダー)); 
    } 
    VerifyRoutingServicesAreRegistered(ビルダー)。// 校验是否加载完成
    VAR endpointRouteBuilder = 新しいDefaultEndpointRouteBuilder(ビルダー)。
    builder.Properties [EndpointRouteBuilder] = endpointRouteBuilder。
    リターン builder.UseMiddleware <EndpointRoutingMiddleware> (endpointRouteBuilder)。
}

で指定されたIApplicationBuilderにMicrosoft.AspNetCore.Routing.EndpointRoutingMiddlewareミドルウェアを追加します。

プライベート 静的 無効VerifyRoutingServicesAreRegistered(IApplicationBuilderアプリ)
{ 
    // AddRoutingがUseEndpointRouting / UseEndpoint呼び出す前に行われたかどうかを確認します
     // 私たちは、すべてのサービスが追加された場合を確認するRoutingMarkerServiceを使用しています。
    もし(app.ApplicationServices.GetService(typeof演算(RoutingMarkerService))== nullの
    { 
        スロー 新しいInvalidOperationExceptionが(Resources.FormatUnableToFindServices(
            がNameOf(IServiceCollection)、
            がNameOf(RoutingServiceCollectionExtensions.AddRouting)、
            " ConfigureServicesを(...)" ));
    }
公共の 静的 IApplicationBuilder UseEndpoints(この IApplicationBuilderビルダー、アクション<IEndpointRouteBuilder> のconfigure)
{ 
    場合(ビルダー== nullの
    { 
        スロー 新しい例外ArgumentNullException(がNameOf(ビルダー)); 
    } 
    場合(設定== nullが
    { 
        スロー 新しい例外ArgumentNullException(がNameOf(設定します))。
    } 
    VerifyRoutingServicesAreRegistered(ビルダー)。
    VerifyEndpointRoutingMiddlewareIsRegistered(ビルダー、 のvar endpointRouteBuilder)。
    configure(endpointRouteBuilder)。
    // はい、この変異しIOptions。私たちは、グローバルコレクション内のデータソースを登録している
     // エンドポイントまたはURL生成の発見のために使用することができます。
    // 
    // 各ミドルウェアは、データソースの独自のコレクションを取得し、それらのデータソースのすべても
     //は、グローバルコレクションに追加されます。
    VAR routeoptionsは= builder.ApplicationServices.GetRequiredService <IOptions <routeoptionsは>> ();
    foreachのVARのデータソースendpointRouteBuilder.DataSources)
    { 
        routeOptions.Value.EndpointDataSources.Add(データソース)。
    }
    リターン builder.UseMiddleware <EndpointMiddleware> (); 
}

サウンド使用ASP.NETコア3 のエンドポイントルーティングは、通常は内部アプリケーションができるルーティングはより多くの制御を提供します。二つの別々のステップにルーティングエンドポイント:

最初のステップでは、ルーティングおよび構成に再び一致するルートは、要求された見つけるために訪問することにあるルートを。最後のステップでは、評価するためのルートを決定し、適切なミドルウェアを呼び出します。

これらの点の間の他の中間機能を可能にする二つの別々のステップ、。ミドルウェアは、実際の処理プログラムを実行することなく、サブ認証プロセスにエンドポイントから情報をルーティングすることができます。

)(app.UseRoutingするルーティングロジック登録ミドルウェアでルートを実行します。

app.UseEndpoints()ルーティングを実行します。

MapControllerRouteエンドポイントコントローラ動作の追加 IEndpointRouteBuilderを  所与の経路を指定するnamepattern、   defaultsconstraints、およびdataTokens

その他:

MapControllerは、属性に追加し、ルーティングコントローラがサポート。

MapControllerはルートのこの属性をサポートするコントローラに追加すること。

MapControllerRouteの追加コントローラの従来の経路

オリジナル。ソースを記入してください。

ロングったらしいの束は、2つの方法が、次のルーティングの使用量が言うようになったと述べました -

 

おすすめ

転載: www.cnblogs.com/xtt321/p/12340001.html