我无法使用odata使用replace函数,导致以下错误: “未知功能'替换'”
所以我在他们的文档中提取了示例网址,确定相同的错误。 http://services.odata.org/Northwind/Northwind.svc/Customers?$ filter = replace(CompanyName,'','')eq'AlfredsFutterkiste'
是否有另一种方法可以替换?
答案 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, 错误的参与者可能会创建一个请求,该请求将溢出 服务器。
在我们真正拥有安全之前,生活要容易得多...
该功能也不再存在于规范中。