浏览器对网址的长度有限制。 IE有限制,Url长度不应超过2K字符。
当我形成$ filter equals查询时,我可以与多个输入值进行比较。在这种情况下,Url的长度将超过2K。
OData是否对Url的长度设置了任何限制?
由于
答案 0 :(得分:8)
OData本身并不限制Url的长度,但正如您所指出的那样,大多数客户端和服务器都会这样做。因此,通常不会长时间生成URL是一个很好的方法。
您提到的问题(实现Contains运算符或类似的东西)有两种可能的解决方法:
1)使用服务操作为您处理此类查询。您可以传递编码为字符串或类似内容的多个输入值,或者服务操作可能事先知道这些值。
2)使用long $ filter,但是在$ batch请求中发送请求。优点是Url的限制要大得多,你不太可能会遇到它。缺点是即使您尝试执行GET请求,由于$ batch它会通过Web传递为POST请求,因此它不会被缓存。
答案 1 :(得分:2)
我将@Vitek's answer推荐给OP的问题:
OData本身并不限制Url的长度
但如果其他人因 IIS限制:The request filtering module is configured to deny a request where the query string is too long.
到达此处,他们可能会从我的回答中受益。请遵循该错误的说明:
Verify the configuration/system.webServer/security/requestFiltering/requestLimits@maxQueryString setting in the applicationhost.config or web.config file.
按照说明操作:
<configuration>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="50000">
</requestLimits>
...
您可能还会收到此错误消息:
The length of the query string for this request exceeds the configured maxQueryStringLength value.
<configuration>
<system.web>
<httpRuntime maxQueryStringLength = "50000" ... />