无法在我的脑海中直接获得 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 来避免此类问题。
我正在努力解决 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 来避免此类问题。