ASP.NET 4.5 を使用しており、Global.asax ファイルに次のルーティング ルールがあります。
RouteTable.Routes.MapPageRoute("defaultRoute", "{*value}", "~/default.aspx")
私が達成しようとしているのは、次のようにフォーマットされた動的に生成された URL をリダイレクトすることです。
実際には次のようになります。
私の問題は、上記がすべてのリクエストをリダイレクトすることです-たとえば、axdまたはjpgファイルにリダイレクトします。次のように、他のすべての種類のファイルの除外を追加できます。
RouteTable.Routes.Ignore("{resource}.axd/*pathInfo}")
しかし、これはエラーが発生しやすく、面倒です (たとえば、誰かが別のファイル タイプをプロジェクトに追加するとどうなるでしょうか?)。
だから、私がやりたいことは次のようなものです:
RouteTable.Routes.MapPageRoute("defaultRoute", "{*value}(where no suffix)", "~/default.aspx")
または、私の明確な英語に置き換えてください:
URL にサフィックスがない場合は、defaultRoute を使用して ~/default.aspx にリダイレクトします。
これを達成する方法について何か考えはありますか?
==
アップデート:
このMSDN の記事を見つけました。Constraints を使用すると、私が上で話していることを実装することができるようです...しかし、どうすればよいのか正確にはわかりません...
==
更新 2:
今のところまずまずの解決策があります。以下を追加しました。
RouteTable.Routes.Ignore("{path}/{value}")
画像やその他のファイルはサブディレクトリに保持されるため、強制的に除外されます。それでも、これには2つの懸念があります
- パスが 1 つのサブディレクトリよりも長い場合 (例: images/people/person.jpg)?
- ファイルが jpg などのメイン ルートに配置された場合はどうなりますか (そうすべきではありませんが、発生する可能性があります)。