Webforms 4 プロジェクトがあり、URL ルーティングを使用しています
場合によっては、特定のルートが複数のパターンに一致することがあります。
ルーティング メカニズムは特定の順序で各パターンを試行し、最初の一致で停止するようです。(私が間違っている場合は修正してください)。選択したパターンのリソース (主に aspx ファイル) が存在しない場合は、404 エラー (リソースが存在しません) が発生します。
次に一致するパターンは既存のリソースにマップされますが、メカニズムはそれを試みません。
例 (MVC と同様の命名規則を使用)
routes.MapPageRoute("Action", "{controler}/{action}/{*pathInfo}", "~/Views/{controler}/{action}.aspx");
routes.MapPageRoute("Overview", "{controler}/{*pathInfo}", "~/Views/{controler}/Overview.aspx");
したがって、ファイル システムには /Views/Patient/Overview.aspx と /Views/Patient/Search.aspx があります。
ルート " /Patient " は 2 番目のパターンと一致し、" /Views/Patient/Overview.aspx "にマップされます。
ルート " /Patient/Search " は最初のパターンと一致し、" /Views/Patient/Search.aspx "にマップされます。
ルート " /Patient/Search/SomePathInfo " は最初のパターンに一致し、" /Views/Patient/Search.aspx " にマップされます( URL の "SomePathInfo" 部分を {*panthinfo} 部分として扱います)。
ここでの問題は、ルート「/Patient/SomePathInfo」が両方のパターンに一致することです。最初のものは "SomePathInfo" を {action} 部分として扱います (存在しない" /Views/Patient/SomePathInfo.aspx " を検索します)。2 つ目は、"SomePathInfo" を {*pathInfo} 部分として扱い、既存の " /Views/Patient/Overview.aspx " にマップします。
ただし、メカニズムは最初のファイルを試行しますが、SomePathInfo.aspx ファイルが見つからず、404 エラーがスローされます。
私の質問は、「既存のリソースが見つかるまで各パターンを試行するようにメカニズムに指示する方法はありますか? (または、より一般的には、何らかの条件が満たされるまで? [ここ: resource.exists]」!