gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:29:46 27 4
gpt4 key购买 nike

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

GET /odata/Providers(2)/DoSth

但我不明白它是如何工作的。这是我的一个 Controller 的代码:

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

和 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>();

方法存在于/odata/$metadata

但无法从 url 运行此方法(仍然显示 404:“未找到与请求 URI 匹配的 HTTP 资源”)。

有什么想法可以改善这个问题吗?

最佳答案

在 OData 中,只能通过 POST 方法调用操作。所以只需将请求从 GET 更改为 POST。

如果不行,在controller中的方法中添加一个属性:

[HttpPost]
public int DoSth()
{
return 22;
}

如果您刚开始使用 OData,我建议您从 OData V4 开始,这是一个 OASIS 标准。这是有关操作的示例:https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataActionsSample/ .

关于c# - ASP.NET WebAPI 2 OData Controller 中的自定义 GET 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25163769/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com