Routeconfig覆盖WebApi路由

时间:2015-05-07 12:52:10

标签: c# asp.net-mvc angularjs asp.net-web-api

我正在开发一个Angular应用程序,使用ASP.NET WebApi作为后端。

如果我从RouteConfig.cs中删除了catch-all路由,

http://localhost:1653/api/feed工作正常。

当我添加它时,它也会捕获api调用。

public class FeedController : ApiController
{
    [HttpGet]
    [Route("api/feed")]
    public IEnumerable<FeedItem> Get()
    {
        var items = new List<FeedItem>();
        items.Add(new FeedItem("News from the server!"));

        return items;
    }
}

但是当删除时,Angular应用程序在刷新时崩溃,因为需要使用catch-all路径来显示所有视图。

        routes.MapRoute(
            name: "Default",
            url: "{*anything}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

属性路由不应该解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

找到它:

   protected void Application_Start()
   {
        Container = UnityConfig.InitializeUnity();
        AreaRegistration.RegisterAllAreas();
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        GlobalConfiguration.Configure(WebApiConfig.Register);
        ...

如果RouteConfig是第一个,那么它不起作用。好的,所以有:)