Web API OData v4 只给出 404

Web API OData v4 only gives 404

我已经筋疲力尽了,我 运行 无能为力 Google。不知道下面哪一段是错的?

localhost:29197/odata/Tests/returns404

localhost:29197/odata?$metadata returns 404(或者是localhost:29197/odata/$metadata)

带或不带路由前缀的相同 404。

控制器:

namespace MvcApplication.Api
{
    public class TestsController : ODataController
    {
        [EnableQuery]
        public IQueryable<Test> Get()
        {
            return new List<Test>() {new Test() {Id = 1}}.AsQueryable();
        } 
    }
}

WebApiConfig:

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

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.MapODataServiceRoute(routeName: "odata", routePrefix: "odata", model: GetEdmModel());
    }

    private static IEdmModel GetEdmModel()
    {
        var builder = new ODataConventionModelBuilder();

        builder.EntitySet<Test>("Tests");

        var model = builder.GetEdmModel();
        return model;
    }
}

WebApiConfig.RegisterRouteConfig.RegisterRoutes

之前

Web.config包含<modules runAllManagedModulesForAllRequests="true" />

只需确保您已在 global.asax.cs 的应用程序启动事件中注册 Web Api 配置,如下所示 -

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
}