无法在我的脑海中直接获得 ASP.NET MVC 和 Web API 路由 - 获得大量 404

Unable to get ASP.NET MVC and Web API routing straight in my mind - getting 404s galore

我正在努力解决 ASP.NET MVC + WebAPI 应用程序中的路由问题。我觉得我在这里有一个移动的目标,因为当我添加或更改一条路线时,我会破坏另一条路线。这是我的具体例子。

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

接下来,我的 MVC 路由配置(我知道我的配置可能是重复的,但这是因为我正在尝试):

还有我的 Web API 路由配置(我知道我的配置可能非常重复,但这是因为我正在尝试):

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

所以我 post 到创建操作方法...

如您所见,我得到了错误:404 not found - "No HTTP resource was found that matches the request URI

我会喜欢这里的方向...

顺序或注册路线很重要,因为请求由与模式匹配的第一条路线处理。因为您的默认路线是它始终选择的第一条路线。 你需要把你的默认路线放在最后一条,并注册你所有的路线,从最受限制的路线开始,到默认路线结束。另外,我在你的截图中看到你的一些路线是未完全配置:例如 api/PodcastFeeds 路由未指定控制器(它需要看起来类似于第二个屏幕截图中的 FeedRouteMap 路由):

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

作为替代方案,您可以使用 attribute routing 来避免此类问题。