0

ASP.NET 4.5 を使用しており、Global.asax ファイルに次のルーティング ルールがあります。

RouteTable.Routes.MapPageRoute("defaultRoute", "{*value}", "~/default.aspx")

私が達成しようとしているのは、次のようにフォーマットされた動的に生成された URL をリダイレクトすることです。

http://myurl.com/firstname姓

実際には次のようになります。

http://myurl.com/davemackey

私の問題は、上記がすべてのリクエストをリダイレクトすることです-たとえば、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. パスが 1 つのサブディレクトリよりも長い場合 (例: images/people/person.jpg)?
  2. ファイルが jpg などのメイン ルートに配置された場合はどうなりますか (そうすべきではありませんが、発生する可能性があります)。
4

0 に答える 0