找不到OData Action Endpoint

时间:2016-04-29 10:16:33

标签: c# odata asp.net-web-api2

我正在尝试将我的api链接到braintree支付系统。我正在使用OData,但我正在努力处理我的端点。我一直得到404:

未找到与请求URI“http://localhost:34403/odata/GetPlans”匹配的HTTP资源。

这是我在WebApiConfig类中注册我的路线的地方:

var GetPlans = builder.Action("GetPlans");

除了Action,我还应该使用其他东西吗?也许还有别的东西?

以下是我要尝试的端点:

    [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);

    }

1 个答案:

答案 0 :(得分:2)

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

var GetPlans = builder.Function("GetPlans");

http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/odata-actions-and-functions

中行动与功能之间差异的快速摘要
  

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

     

操作是允许副作用的操作,例如数据   修改,并不能进一步组成,以避免   非确定性行为。

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