C# 路由错误:未找到与请求URI匹配的HTTP资源
我正在尝试进行API调用C# 路由错误:未找到与请求URI匹配的HTTP资源,c#,asp.net-web-api,asp.net-web-api2,asp.net-web-api-routing,C#,Asp.net Web Api,Asp.net Web Api2,Asp.net Web Api Routing,我正在尝试进行API调用 http://localhost:56578/v1/reports 调用我的GetReports()方法 但是,我继续在主题中获取错误消息 我在这里通过路由前缀跟踪ms文档: 我做错了什么 ReportV1Controller.cs [Authorize] [RoutePrefix("v1/reports")] .... .... [Route("")] public IHttpActionResult GetReports() config.Routes.MapH
http://localhost:56578/v1/reports
调用我的GetReports()
方法
但是,我继续在主题中获取错误消息
我在这里通过路由前缀跟踪ms文档:
我做错了什么
ReportV1Controller.cs
[Authorize]
[RoutePrefix("v1/reports")]
....
....
[Route("")]
public IHttpActionResult GetReports()
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
WebApiConfig.cs
[Authorize]
[RoutePrefix("v1/reports")]
....
....
[Route("")]
public IHttpActionResult GetReports()
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
对此进行更改:
[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如果您在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 }
);
}
}