У меня проблема с маршрутизацией OData в сочетании с ASP.NET Core.У меня есть следующие классы
public class Publisher
{
public int Id { get; set; }
public string Name { get; set; }
public Category Category { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Type { get; set; }
}
Конфигурация
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseMvc(b =>
{
b.Select().Expand().Filter().OrderBy().MaxTop(100).Count();
b.MapODataServiceRoute(routeName: "myRoute", routePrefix: "odata", model: GetEdmModel());
});
}
private static IEdmModel GetEdmModel()
{
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Publisher>("Publisher");
builder.EntitySet<Category>("Category");
return builder.GetEdmModel();
}
И, конечно, контроллер
public class PublisherController : ODataController
{
[EnableQuery]
public ActionResult<string> GetCategory()
{
return _db.Publishers.Select(p => p.Category);
}
[EnableQuery]
public ActionResult<string> GetCategory([FromODataUri] int key)
{
return Ok(_db.Publishers.Where(p => p.Id == key).Select(p => p.Category));
}
}
Проблема в том, что когда я пытаюсь сделать GETзапрос с конкретным идентификатором, например
http://localhost:port/odata/Publisher(1)/Category
все работает нормально, и я получаю результат, но если я пытаюсь сделать
http://localhost:port/odata/Publisher/Category
, у меня есть 404 исключение Not Found
У тебя есть мысли?