Asp.net web api 使用ODataURL传递多个参数

Asp.net web api 使用ODataURL传递多个参数,asp.net-web-api,odata,Asp.net Web Api,Odata,我想使用OData协议在Get请求中传递多个参数。下面是我正在做的 我使用fiddler获取请求,如下所示 https://127.0.0.1/odata/controllerName('param1','param2') 在我的控制器类中,我有两个控制器方法。第一个控制器方法只接受一个参数,第二个控制器方法接受两个参数。带有一个参数的控制器方法工作正常。当我请求带有两个参数的控制器方法时,它会调用带有一个参数的控制器方法。我无法理解为什么它不能识别带有两个参数的控制器方法。或者OData不支

我想使用OData协议在Get请求中传递多个参数。下面是我正在做的

我使用fiddler获取请求,如下所示

https://127.0.0.1/odata/controllerName('param1','param2')
在我的控制器类中,我有两个控制器方法。第一个控制器方法只接受一个参数,第二个控制器方法接受两个参数。带有一个参数的控制器方法工作正常。当我请求带有两个参数的控制器方法时,它会调用带有一个参数的控制器方法。我无法理解为什么它不能识别带有两个参数的控制器方法。或者OData不支持多个参数

控制器方法1

public int controllerName([FromOdataUri] string key);
控制器方法2

public int controllerName([FromODataUri] string param1, [FromODataUri] string param2);

OData接受一个参数,但它可以是作为请求主体传递的JSON字典。在“调用操作”标题下,通过谷歌搜索ODataActionParameters了解.NET的WebAPI如何实现OData参数字典要求。

根据OData协议,如果实体的键由两个属性组成,则可以通过以下方式查询:

    ~/odata/EntitySet(key1='key1',key2='key2')
但是,如果您没有这样的键,那么您可能需要使用GET调用的函数,并在URL中传递参数,例如

    ~/odata/Products(33)/Default.CalculateGeneralSalesTax(state='WA') 
    ~/odata/GetSalesTaxRate(state='CA')
请参考此示例:


您可以添加任意数量的参数。

由于链接示例。。。似乎有必要实现复合密钥处理程序,如果您想这样调用它。。。