0

我在我的ASP.NET MVC + WebAPI应用程序中苦于布线问题。我觉得我在这里有一个移动的目标,因为当我添加或更改一条路线时,我打破了另一条路线。这是我的具体例子。无法直接在我的脑海中获得ASP.NET MVC和Web API路由 - 获得404s豪华版

首先,我的控制器,所以你可以看到的名字:

enter image description here

接下来,我的MVC的路由配置(据我所知,我的配置是可能重复,但是那是因为我想的东西) :

enter image description here

而且我的Web API路由配置(据我所知,我的配置是可能很重复,但是那是因为我想的东西):

enter image description here

作为路由问题例如,这里的PodcastFeeds API控制器:

enter image description here

所以我张贴到创建操作方法......

enter image description here

而且正如你所看到的我得到的错误:404 not found - "No HTTP resource was found that matches the request URI

我喜欢这里的一些方向......

回答

2

的顺序或登记的路线是很重要的,因为请求都将通过该图案匹配的冷杉途径处理。由于您的默认路线是始终选中的第一条路线。 您需要将您的默认路线设置为最后一个路线,并注册您的所有路线,从最大限制开始并以默认路线结束。也是我在你的截图看到一些你的路由都没有完全配置:例如api/PodcastFeeds路线并不指定控制器(它需要寻找类似的从第二截图你FeedRouteMap路线):

routes.MapHttpRoute(
    name: "PodcastFeeds", 
    url: "api/PodcastFeeds/{action}/{id}", 
    defaults: new {controller="PodcastFeeds", action="Create", id=UrlParameter.Optional}) 

作为替代,您可以使用attribute routing来避免这些问题。

+0

你可以分享你的Global.asax内容我需要看到Application_Start方法 –

+0

这里你去:'AreaRegistration.RegisterAllAreas();,; FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters),WebApiConfig.Register(GlobalConfiguration.Configuration); ,RouteConfig.RegisterRoutes(RouteTable.Routes);'请注意,我在WebApiConfig.cs的'Register(...)'方法中放置了一个断点,并且确实被击中。 – Howiecamp

+0

我很困惑如何MVC路由和Web API路由交互,因此我不清楚在哪里做出更改。我应该在routeconfig还是在webapi路由配置中进行默认路由更改?关于你的评论重新:我的一些路线没有指定控制器,我已经编辑该映射为:'Routes.MapHttpRoute(name:“PodcastFeedsAPI”,routeTemplate:“api/PodcastFeeds/{action}”,默认值:new { ApiController =“PodcastFeeds”,action =“Create”});'但我得到同样的错误。 (请注意,url并不适用于我,我必须做routeTemplate。也许是因为我是Web API 2?) – Howiecamp