Web API OData v4 only gives 404

本文关键字:gives only v4 API OData Web | 更新日期: 2023-09-27 18:37:21

我已经到了绳子的尽头,我已经没有东西去了谷歌。 我不知道下面哪一部分可能是错的?

本地主机:29197/odata/测试/返回 404

localhost:29197/odata?$metadata 返回 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.Register先于RouteConfig.RegisterRoutes

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

Web API OData v4 only gives 404

只要确保,您已经在global.asax中的应用程序启动事件中注册了WebApi conffig.cs如下所示 -

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