[英]OData routing in Web Api
我正在尝试在Web Api中启用OData
。 我创建了OData
路由,并创建了一个从ODataController
继承的控制器,我想从我的应用程序中获取一些示例数据。 这是我的代码:
public class TicketController : BaseWebApiController //inherits from ODataController
{
[EnableQuery]
public IQueryable<TicketModel> Get()
{
return (_ticketService.GetAll());
}
[EnableQuery]
public SingleResult<TicketModel> Get([FromODataUri] int id)
{
return (_ticketService.Get(id));
}
_ticketService
是一个模拟服务,它使用AsQueryable()
方法从静态的TicketModel列表返回示例数据。 工作正常。
public static class ODataConfig
{
public static void EnableOData(HttpConfiguration config)
{
config.MapODataServiceRoute("odata", "api", GetEdmModel(), new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer));
config.EnsureInitialized();
}
private static IEdmModel GetEdmModel()
{
var builder = new ODataConventionModelBuilder();
builder.EntitySet<TicketModel>("Ticket");
var edmModel = builder.GetEdmModel();
return edmModel;
}
}
然后在App_Start/WebApiConfig.cs
注册方法中调用ODataConfig.EnableOData(config)
。
问题是,虽然url http://localhost:52074/api/Ticket
正确调用Get()
方法,但http://localhost:52074/api/Ticket(1)
的url请求也调用Get()
而不是Get(1)
。 我试图附加ODataRouting("({id})")
属性,但是它所做的只是抛出异常消息
“控制器中操作上的路径模板不是有效的OData路径模板”。
有人遇到过这个问题吗? 有任何想法吗? 帮助表示赞赏。
PS。 这是我的第一个问题,所以如果有什么遗漏,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.