我在我的繩索末端,我已經用盡了谷歌。我不知道下面的哪一部分可能是錯的?Web API OData v4只提供了404
本地主機:29197 /的OData /測試/返回404
本地主機:29197/OData的$元返回404(或者是本地主機:29197 /的OData/$元數據)?
同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" />
您的代碼在我的環境中正常工作(OWIN在OS X上運行)。看起來像它的IIS或Windows配置問題。 – lencharest
嗯,我在IIS Express上託管本地主機 – RJB
順便說一句,您的服務的正確URI是'http:// localhost:29197/odata/$ metadata'和'http:// localhost:29197/odata/Tests'。 – lencharest