我正在尝试为网页和Web API注册多个路由。下面是我的配置:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Registration Courses SPA",
url: "Registration/Courses",
defaults: new {controller = "Registration", action = "Index"});
routes.MapRoute(
name: "Registration Instructors SPA",
url: "Registration/Instructors",
defaults: new { controller = "Registration", action = "Index" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}和
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate:"api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}下面是我如何在Global.asax中注册它们
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(WebApiConfig.Register);问题是WebAPI路由不工作,我得到了404错误,除非我首先注册WebAPI路由,然后ASP.NET MVC路由不工作,WebAPI路由工作。
发布于 2015-03-05 00:35:34
就像@ChrFin在他的评论中所说的那样,如果你首先注册Web API路由,你的MVC路由应该仍然有效,因为默认的Web API路由以"api“开头。
我也有同样的问题,但这是因为我们将默认Web API路由的routeTemplate更改为{controller}/{id},因为我们希望它成为默认的,因为我们的应用程序的目的是成为其他应用程序的应用程序接口。在我们的Global.asax文件中,Web路由在MVC路由之前注册,这是任何新的Web应用程序的默认设置。因为"/anything“匹配默认的Web API路由,所以路由处理停止,所以我们的MVC路由永远没有机会匹配。
关键的一点是,如果路由匹配,即使没有匹配的控制器,路由处理也会停止。
为了解决我们的问题,我们在MVC路由前加上了" MVC“前缀,并在Web API路由之前注册了MVC路由。
https://stackoverflow.com/questions/24931225
复制相似问题