私は MVC4 の RouteConfig クラスを少しいじっていましたが、なぜそれが起こっているのかわからないという奇妙な動作に遭遇しました。
クラスに次のコードがあります。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add("Favicon", new Route("favicon.ico", new FavIconFileHandler()));
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
アイデアは、誰かがhttp://my.domain.com/favicon.icoにアクセスすると、使用されたサブドメインに応じて異なるファイルが提供されるというものです。たとえば、http://app1.domain.comはhttp://app2.domain.comとは別のものを取得します。これは IISRewrite で実行できることはわかっていますが、このルートを調べて問題も解決しようとしています。
ここのコードは実際に機能します。問題は、MVC でフォームを送信すると、次の URL が表示されることです。
http://localhost:13424/favicon.ico?action=ShowResult&controller=Home
それ以外の
http://localhost:13424/Home/ShowResult
なぜこれが起こっているのか、なぜ favicon.ico が URL に追加されているのか?