小编use*_*281的帖子

ASP.NET WebAPI 2 OData Controller中的自定义GET操作

我正在使用WebApi2和OData.我想添加自定义操作,并通过GET方法使用它

GET /odata/Providers(2)/DoSth
Run Code Online (Sandbox Code Playgroud)

但我不明白它是如何工作的.这是我的一个控制器的代码:

public class ProvidersController : ODataController
{
    private Entities db = new Entities();

    // GET: odata/Providers
    [Queryable]
    public IQueryable<PROVIDER> GetProviders()
    {
        return db.PROVIDER;
    }
    //... OTHER GENERATED METHODS

    //MY TEST METHOD SHOULD BE inoked: GET /odata/Providers(2)/DoSth
    public int DoSth()
    {
        return 22;
    }
 }
Run Code Online (Sandbox Code Playgroud)

和WebApiConfigFile:

  ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
  builder.EntitySet<PROVIDER>("Providers").EntityType.HasKey(o => o.P_ID);
  //others entities ...

  //my custom action without any parameters, returns int:
  ActionConfiguration getTest = builder.Entity<PROVIDER>().Action("DoSth");
  getTest.Returns<int>();
Run Code Online (Sandbox Code Playgroud)

/ odata/$ metadata中存在的方法

但是无法从url运行此方法(仍然显示404:"找不到与请求URI匹配的HTTP资源").

有任何想法如何改善这个问题?

c# rest odata asp.net-web-api asp.net-web-api2

3
推荐指数
1
解决办法
7773
查看次数

标签 统计

asp.net-web-api ×1

asp.net-web-api2 ×1

c# ×1

odata ×1

rest ×1