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.Register
在 RouteConfig.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);
}
}
我已经筋疲力尽了,我 运行 无能为力 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.Register
在 RouteConfig.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);
}
}