没有找到路由约定来为模板'〜/ entityset'选择OData路径的操作

use*_*248 8 odata c#-4.0 odata4j asp.net-web-api asp.net-web-api-routing

我定义了两个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));
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用的查询如下

http://bureauservice/api/odata/UserOdata - Doesnt work
http://bureauservice/api/odata/UserOdata(1) - works
Run Code Online (Sandbox Code Playgroud)

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

Fen*_*hao 12

请更改将实体集返回" Get[EntitySetName]"或" Get" 的方法的名称.

改变

public IQueryable<User> GetUser()
Run Code Online (Sandbox Code Playgroud)

public IQueryable<User> GetUserOdata()
Run Code Online (Sandbox Code Playgroud)

要么

public IQueryable<User> Get()
Run Code Online (Sandbox Code Playgroud)


Tan*_*nfu 0

您可能需要将括号添加到第一个 URL:

http://bureauservice/api/odata/UserOdata() 
Run Code Online (Sandbox Code Playgroud)

如果您刚刚开始 proactise odata,那么 Odata v4 是一个很好的起点,因为它是 OASIS 标准,但 v3 不是。

这是 v4 版本函数示例: https://github.com/OData/ODataSamples/tree/master/WebApiCore/ODataFunctionSample