ASP.NET Web API 属性路由 404 错误

3

我真的完全想不明白为什么我的属性路由不起作用。

这是我的设置:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Attribute routing
        config.MapHttpAttributeRoutes();

        // Convention-based routing
        config.Routes.MapHttpRoute(
            name: "API Default",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

    }
}

这是我的控制器以及路由属性:

[Route("api/v1.0/orders")]
public class OrdersV1Controller
{

    [APIAuthentication(RequireAuthentication = true)]
    [HttpGet]
    [Route("{id:int}")]
    public GetOrderResponse GetOrder(int id)
    { 
      .....
    }
}

这是我的全局 asax 文件:

public class Global : HttpApplication
{
    void Application_Start(object sender, EventArgs e)
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Populate;
    }
}

这是我正在测试的URL,返回404未找到:

http://localhost:60105/api/v1.0/orders/111111


(注:该URL无法访问)

1
你考虑过 public class OrdersV1Controller : ApiController 吗? - Jonesopolis
哇,我简直不敢相信在所有的例子中都错过了那个……唉……这就完成了,伙计。把它作为答案添加进去,这样我可以给你贡献。 - 99823
哈哈,很高兴它解决了。 - Jonesopolis
嘿 - 你和我一样,我已经在这上面工作了两天...哈哈..我感觉自己好蠢..哈哈,再次感谢你啊。 - 99823
1个回答

7
您的控制器需要是API控制器:
public class OrdersV1Controller : ApiController

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接