ASP.Net MVC маршрутизация управляется файлами Global.asax
/ Global.asax.cs
. Стандартная маршрутизация выглядит следующим образом:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
Когда путь не указан, т.е. www.domain.tld/
, маршрут - пустая строка, ""
. Поэтому при маршрутизации выполняется поиск контроллера с таким именем. Другими словами, он ищет контроллер без имени вообще. Когда он не находит такого контроллера, он отображает страницу ошибки 404 NOT FOUND
.
Чтобы решить эту проблему, либо сопоставьте этот путь с чем-то значимым, либо полностью игнорируйте этот маршрут, передав управление файлу index.html:
routes.IgnoreRoute("");