OData未知功能'替换'

时间:2015-06-03 21:03:25

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

我无法使用odata使用replace函数,导致以下错误: “未知功能'替换'”

所以我在他们的文档中提取了示例网址,确定相同的错误。 http://services.odata.org/Northwind/Northwind.svc/Customers?$ filter = replace(CompanyName,'','')eq'AlfredsFutterkiste'

是否有另一种方法可以替换?

2 个答案:

答案 0 :(得分:1)

按照 AllowedFunctions,V3的Web API不允许替换。

示例服务正在使用WCF数据服务,并且它要求将DataServiceBehavior上的AcceptReplaceFunctionInQuery设置为true以支持替换。默认值为false。

一种方法是使用indexof与substring结合来进行替换,但这仅在要替换的字符串只出现一次时才有效。请参阅以下查询:

http://services.odata.org/Northwind/Northwind.svc/Customers?$filter=indexof(CompanyName, ' ') ge 0 and concat(substring(CompanyName, 0, indexof(CompanyName, ' ')),substring(CompanyName, indexof(CompanyName, ' ') add 1, length(CompanyName))) eq 'AlfredsFutterkiste'

答案 1 :(得分:0)

我尝试添加string。https://github.com/OData/WebApi/issues/1937替换为OData,但显然是根据Michael Pizzo的说法:

  

我们实际上故意省略了string.Replace因为它是   确定为可能的DOS攻击面。使用string.Replace,   错误的参与者可能会创建一个请求,该请求将溢出   服务器。

     

在我们真正拥有安全之前,生活要容易得多...

该功能也不再存在于规范中。