我一直在搞乱 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?