Я нахожусь в конце своей веревки, у меня закончились вещи в Google. Я не знаю, какая часть ниже может быть неправильной?Web API OData v4 дает только 404
локальный: 29197/OData/Тесты/возвращает 404
локальный: 29197/OData $ метаданных возвращает 404 (или это локальный: 29197/OData/$ метаданных)?
Same 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 на localhost – RJB
Кстати, правильные URI для вашей службы - это http: // localhost: 29197/odata/$ metadata' и 'http: // localhost: 29197/odata/Tests'. – lencharest