2017-06-05 4 views
0

は私が定義されたルーティングを使用して新しいASP.NETコアのWebアプリケーションを持っているデフォルトルートにフォールバックされていませんページはHomeControllerです。 /sitemap.xmlというURLをリクエストすると、XMLがSitemapControllerで表示されます。 MatchメソッドがCmsRouteConstraintに返信するURLをリクエストすると、が返信されます。リクエストはContentControllerによって処理されています。ASP.NETコア・ルートは、次のように

ただし、他のすべてのURLは404応答を返しています。私の理解では、これらのURLはまだ私のデフォルトルートで処理され、HomeControllerに渡されるべきですが、そうではありません。私が奇妙に思うのは、URL /または/where/am/iを要求するかどうかにかかわらず、私はCmsRouteConstraintを返すことがあります。falseを返すのはなぜですか、なぜ前者は後者ではなく、HomeControllerで処理されますか?

答えて

1

あなたの持っているものを使用する必要があります。 exapleのためにあなたはそれがdeafult経路で処理されますが、あなたはswagアクションでyoloコントローラを持っていると「私が使用reccomentのでに関する*cmsルートと彼のキャッチオールルート機能を覚えても404

を返しますいけない/yolo/swagを呼び出したい場合は、貪欲なマッチング "

+0

私はあなたのことをよく理解しています。/yolo/swagは、既定のルートとして処理され、既定のコントローラとしてホームが指定され、既定のアクションとしてインデックスが指定されます。したがって、404ではなくHomeControllerに渡す必要があります。貪欲な照合では、そのルートがすべての要求をキャッチし、偽の場合はルートテーブルの次のルートに要求を渡すという条件をチェックします。私は404の応答が欲しい場合がありますが、今では '/'がHomeControllerを経由する理由を理解する必要がありますが、 'anything/else'はありません。 – getsetcode

+1

@TomTroughton Troughtonあなたは、ASP.NET Core MVCでのルーティング方法を理解していません。 '{controller = Home}'はコントローラを取るか、ifが空であれば 'home'をセットすることを意味します。 '/ yolo/swag'は' yolo'コントローラを使用しますが、 'home'はデファクトではありません(ただし、' deafult'ルート名を使用します) –

+0

私は今それを取得します。説明してくれてありがとう。 – getsetcode

関連する問題