2015-05-07 4 views
0

Я работаю над угловым приложением, используя ASP.NET WebApi в качестве бэкэнд.Routeconfig overriding WebApi Маршрутизация

http://localhost:1653/api/feed отлично работает, если я удаляю весь маршрут от RouteConfig.cs.

Когда я добавляю его обратно, он также ловит вызов 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; 
    } 
} 

Но при удалении угловых сбоев приложения при обновлении, так как всеохватывающий маршрут необходим, чтобы показать все представления.

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

Не должен ли атрибут маршрутизации заботиться об этом?

+0

У вас есть 'config.MapHttpAttributeRoutes();' перед всеми маршрутами? – adricadar

+0

'config.MapHttpAttributeRoutes();' должен находиться в вашем 'WebApiConfig' –

+0

config.MapHttpAttributeRoutes() находится в WebApiConfig. Но все маршруты находятся в RouteConfig. Нужен ли api-маршрут в WebApiConfig (даже если у меня есть маршрутизация атрибутов)? –

ответ

0

Нашел:

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

это не работает, если RouteConfig приходит первым. Хорошо, так что есть :)

Смежные вопросы