C# 路由错误:未找到与请求URI匹配的HTTP资源

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

我正在尝试进行API调用

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 }
        );
    }
}