C# webapi中的OData路由

C# webapi中的OData路由,c#,.net,asp.net-web-api,odata,C#,.net,Asp.net Web Api,Odata,我正在尝试在Web Api中启用OData。我创建了OData路由和从ODataController继承的控制器,我想从我的应用程序中获取一些示例数据。这是我的密码: public class TicketController : BaseWebApiController //inherits from ODataController { [EnableQuery] public IQueryable<TicketModel> Get() {

我正在尝试在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));
     }
然后在
App\u Start/WebApiConfig.cs
Register方法中调用
ODataConfig.EnableOData(config)

问题是,当url
http://localhost:52074/api/Ticket
正确调用
Get()
方法,url请求为
http://localhost:52074/api/Ticket(1) 
也调用
Get()
而不是
Get(1)
。我试图附加
ODataRouting(({id})]
属性,但它所做的只是抛出一个带有消息的异常

“控制器中操作的路径模板不是有效的OData路径模板”

以前有人有过这个问题吗?有什么想法吗?谢谢你的帮助

这是我在这里的第一个问题,所以如果缺少什么,请告诉我

  • 您应该将
    id
    重命名为
    ,然后
    http://localhost:52074/api/Ticket(1) 
    将路由到
    Get(1)

  • 如果要使用ODataRoute,该属性应类似于:
    [ODataRoute(“客户({id})”)]

  • 供参考

  • 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;
        }
    }