は私が定義されたルーティングを使用して新しい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
で処理されますか?
私はあなたのことをよく理解しています。/yolo/swagは、既定のルートとして処理され、既定のコントローラとしてホームが指定され、既定のアクションとしてインデックスが指定されます。したがって、404ではなくHomeControllerに渡す必要があります。貪欲な照合では、そのルートがすべての要求をキャッチし、偽の場合はルートテーブルの次のルートに要求を渡すという条件をチェックします。私は404の応答が欲しい場合がありますが、今では '/'がHomeControllerを経由する理由を理解する必要がありますが、 'anything/else'はありません。 – getsetcode
@TomTroughton Troughtonあなたは、ASP.NET Core MVCでのルーティング方法を理解していません。 '{controller = Home}'はコントローラを取るか、ifが空であれば 'home'をセットすることを意味します。 '/ yolo/swag'は' yolo'コントローラを使用しますが、 'home'はデファクトではありません(ただし、' deafult'ルート名を使用します) –
私は今それを取得します。説明してくれてありがとう。 – getsetcode