Я думаю, что вы можете попытаться добавить новый маршрут перед вашей первоначальной настройкой маршрута.
Этот параметр сначала проверит URL, соответствует ли Files/{action}/{id}
, если не используется api/Files/{action}/{id}
routes.MapRoute(
name: "FilesRoute",
url: "Files/{action}/{id}",
defaults: new { controller = "Files", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Files",
url: "api/Files/{action}/{id}",
defaults: new { controller = "Files", id = UrlParameter.Optional }
);
РЕДАКТИРОВАТЬ
Проблема заключается в порядке настройки маршрута, вам необходимо задать маршрут по умолчанию, который будет последним.
/api/files/index
=> В противном случае, настройка найдет api
контроллер и files
действие.
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "FilesRoute",
url: "Home/{action}/{id}",
defaults: new { controller = "Home", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Files",
url: "api/Home/{action}/{id}",
defaults: new { controller = "Home", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}