C# 找不到OData操作终结点

C# 找不到OData操作终结点,c#,odata,asp.net-web-api2,C#,Odata,Asp.net Web Api2,我正在尝试将我的api链接到braintree支付系统。我正在使用OData,但我正在努力解决端点的路由问题。我一直得到一个404: 未找到与请求URI“”匹配的HTTP资源 以下是我在WebApiConfig类中注册路由的位置: var GetPlans = builder.Action("GetPlans"); 除了行动,我还应该用别的东西吗?也许还点别的 以下是我试图达到的终点: [HttpGet] [ODataRoute("GetPlans")] public

我正在尝试将我的api链接到braintree支付系统。我正在使用OData,但我正在努力解决端点的路由问题。我一直得到一个404:

未找到与请求URI“”匹配的HTTP资源

以下是我在WebApiConfig类中注册路由的位置:

var GetPlans = builder.Action("GetPlans");
除了行动,我还应该用别的东西吗?也许还点别的

以下是我试图达到的终点:

    [HttpGet]
    [ODataRoute("GetPlans")]
    public IHttpActionResult getPlans()
    {
        var gateway = new BraintreeGateway
        {
            Environment = Braintree.Environment.SANDBOX,
            MerchantId = merchId,
            PublicKey = pubKey,
            PrivateKey = privKey
        };

        List<Plan> plans = gateway.Plan.All();

        return Ok(plans);

    }
[HttpGet]
[ODataRoute(“GetPlans”)]
公共IHttpActionResult getPlans()
{
var网关=新的BraintreeGateway
{
环境=Braintree.Environment.SANDBOX,
MerchantId=merchId,
PublicKey=PublicKey,
私钥
};
列表计划=gateway.Plan.All();
返回Ok(计划);
}

操作需要POST http谓词,但您的方法上有
HttpGet
属性,请将其更改为POST谓词,并确保在调用该方法时使用POST谓词。或者,您可以将其更改为使用GET的函数,您需要在生成器上使用
函数
方法,如下所示:

var GetPlans = builder.Function("GetPlans");
从中快速总结操作和函数之间的差异

功能是没有副作用的操作,可能支持 进一步合成,必须有返回类型

操作是允许产生副作用的操作,例如数据 修改,并且不能为了避免 非确定性行为

操作需要POST操作,因为它们可能有副作用。

您能解释为什么操作需要POST http动词吗?