2016-06-26 19 views
2

Microsoft.AspNetCore.Routingを使用して、複数のwiddlewaresを一致させようとしています。例えば:ASP.NETコアルーターを設定する複数のミドルウェアを実行する

builder.MapRoute( "API"、非同期C => {})//一致すべてのAPIが

builder.MapRouteコール( "API /ユーザ"、非同期C => {})//APIのみ/ユーザ

builder.MapRoute( "API /クライアント"、非同期C => {})// APIのみ/クライアント

しかし、現在、それらの一方のみが一致することができます。

私はMapRoute( "API/{*}のpostfix"、ハンドラ)、そしてこれだけハンドラが実行され、API /クライアントとAPI /ユーザーはいないだろうを行います場合。

複数の一致を処理する方法はありますか?

答えて

4

まず、共通のミドルウェアを登録してみてください。 .MapWhen(...)を使用し、そのミドルウェアの中に子供のミドルウェア.MapRoute(..)を入れます。 MapWhen方法は、分岐述語ベースのミドルウェアをサポートし、

パスベースのマッピングに加えて

https://docs.asp.net/en/latest/fundamentals/middleware.html

:あなたのミドルウェアを登録する順序は問題ともあなたの作品「分岐」方法を理解する必要がありません別々のパイプラインを非常に柔軟な方法で構築することができます。 Func型の述語は、要求をパイプラインの新しい分岐にマップするために使用できます。

概念を説明し、このビデオチェックアウト:

The basics of middleware in ASP.NET Core

関連する問題