C# 4.0 找不到路由约定,无法使用模板“~/entityset”为OData路径选择操作

C# 4.0 找不到路由约定,无法使用模板“~/entityset”为OData路径选择操作,c#-4.0,asp.net-web-api,odata,asp.net-web-api-routing,odata4j,C# 4.0,Asp.net Web Api,Odata,Asp.net Web Api Routing,Odata4j,我定义了两种Odata操作方法。带有参数的一个将被调用,而另一个没有参数的将不会被调用并引发错误。找不到路由约定来为带有模板“~/entityset”的OData路径选择操作 下面是我的动作方法代码 [EnableQuery] public IQueryable<User> GetUser() { return db.Users; } // GET: odata/User(5) [EnableQuery] public

我定义了两种Odata操作方法。带有参数的一个将被调用,而另一个没有参数的将不会被调用并引发错误。找不到路由约定来为带有模板“~/entityset”的OData路径选择操作

下面是我的动作方法代码

[EnableQuery]
    public IQueryable<User> GetUser()
    {
        return db.Users;
    }

    // GET: odata/User(5)
    [EnableQuery]
    public SingleResult<User> GetUser([FromODataUri] int key)
    {
        return SingleResult.Create(db.Users.Where(user => user.Id == key));
    }

有人能告诉我为什么第一个链接不起作用。

您可能需要在第一个URL中添加括号:

http://bureauservice/api/odata/UserOdata() 
如果您刚刚开始使用odata,那么ODataV4是一个很好的起点,因为它是OASIS标准,但v3不是

以下是v4版本的函数示例:
.

请更改返回entityset以获取[EntitySetName]或Get的方法的名称

public IQueryable<User> GetUser()


将第一个操作的名称设置为GetUsers复数,因为您将获得整个用户集合,而在第二个操作中,您将请求单个用户。

链接已断开:
public IQueryable<User> GetUser()
public IQueryable<User> GetUserOdata()
public IQueryable<User> Get()