URL 要求を処理するとき、ルーティングは要求の URL をルートに一致させようと試みます。URL 要求をルートに一致させる操作は、次のすべての条件に依存します。
不適切なハンドラによって要求が処理されるのを避けるために、ルートを定義するときは、これらのすべての条件を考慮する必要があります。Routes コレクション内での Route オブジェクトの順序は重要です。ルートの照合は、コレクション内の最初のルートから最後のルートの順に試行されます。一致が見つかると、それ以降のルートは評価されません。通常、Routes プロパティにルートを追加するときは、最も特定性の高いルート定義から最も特定性の低いルート定義の順に追加します。
たとえば、次のパターンでルートを追加するとします。
最初にルート 1 が評価されますが、ルート 2 に一致する要求はすべてルート 1 にも一致するため、ルート 2 による要求の処理はまったく行われません。http://server/application/products/show/bikes への要求は、ルート 2 の方が一致度が高いと考えられますが、ルート 1 によって次の値として処理されます。
controller = products
action = show
id = bikes
要求にパラメータが含まれていない場合は、既定値が使用されます。その結果、ルートが予想外の要求に一致する場合があります。たとえば、次のパターンでルートを追加するとします。
この場合、ルート 2 で要求が処理されることはありません。ルート 1 は月次レポートを想定し、ルート 2 は年次レポートを想定しているとします。ただし、ルート 1 に既定値を設定すると、ルート 2 として解釈できる要求が、すべてルート 1 にも一致するようになります。
annual/{report}/{year} や monthly/{report}/{year}/{month} のように定数を含めることで、パターンのあいまいさを避けることができます。
RouteTable コレクションに定義されているどの Route オブジェクトにも URL が一致しない場合、その要求は ASP.NET ルーティングでは処理されません。代わりに、ASP.NET ページ、Web サービス、またはその他の ASP.NET エンドポイントに処理が渡されます。