路由错误:未找到与请求 URI 匹配的 HTTP 资源
Posted
技术标签:
【中文标题】路由错误:未找到与请求 URI 匹配的 HTTP 资源【英文标题】:Routing error: No HTTP resource was found that matches the request URI 【发布时间】:2019-08-27 19:42:58 【问题描述】:我正在尝试进行 API 调用
http://localhost:56578/v1/reports
调用我的GetReports()
方法。
但是我继续收到主题中的错误消息。
我在这里通过路由前缀关注 ms 文档:
https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#route-prefixes
我做错了什么?
ReportV1Controller.cs
[Authorize]
[RoutePrefix("v1/reports")]
....
....
[Route("")]
public IHttpActionResult GetReports()
WebApiConfig.cs
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/controller/action/id",
defaults: new id = RouteParameter.Optional
);
【问题讨论】:
【参考方案1】:从此改变:
[RoutePrefix("v1/reports")]
到这里:
[RoutePrefix("api/v1/reports")]
因为:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/controller/action/id",
defaults: new id = RouteParameter.Optional
);
见routeTemplate: "api/controller/action/id"
,你说所有路径的前缀都是api
,controller/action/id
是占位符
结论:如果你要在任何地方使用v1
前缀,把它代替api
【讨论】:
【参考方案2】:如果您在WebApiConfig
中启用了属性路由,您应该可以工作
public static class WebApiConfig
public static void Register(HttpConfiguration config)
// Attribute routing.
config.MapHttpAttributeRoutes(); //<-- THIS HERE
// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/controller/action/id",
defaults: new id = RouteParameter.Optional
);
参考Attribute Routing in ASP.NET Web API 2: Enabling Attribute Routing
假设
[Authorize]
[RoutePrefix("v1/reports")]
public class ReportV1Controller : ApiController
//GET v1/reports
[Route("")]
[HttpGet]
public IHttpActionResult GetReports()
//...
【讨论】:
以上是关于路由错误:未找到与请求 URI 匹配的 HTTP 资源的主要内容,如果未能解决你的问题,请参考以下文章
出现错误:redirect_uri_mismatch 请求中的重定向 URI:http://localhost:8080/oauth2callback 与注册的重定向 URI 不匹配
找到了与名为“Home”的控制器匹配的多种类型。 (奇怪的错误)