浏览器对URL的长度有限制。 IE限制Url长度不应超过2K个字符。OData URL长度限制
当我形成$ filter equals查询时,我可以与多个输入值进行比较。在这种情况下,Url的长度将超过2K。
OData是否对Url的长度设置了任何限制?
感谢
浏览器对URL的长度有限制。 IE限制Url长度不应超过2K个字符。OData URL长度限制
当我形成$ filter equals查询时,我可以与多个输入值进行比较。在这种情况下,Url的长度将超过2K。
OData是否对Url的长度设置了任何限制?
感谢
的OData本身不限制URL的长度,但你注意到大多数客户端和服务器做。所以通常情况下,不要产生URL太长,这是一个好主意。
您参考(实施包含运营商,或者类似的东西),有两种可能的解决方法的问题:
1)使用服务操作来处理这样的查询适合你。您可以传递以字符串或类似方式编码的多个输入值,或者服务操作无论如何都知道这些。
2)使用long $过滤器,但在$批量请求中发送请求。优点是Url的限制更大,并且不太可能会达到目标。缺点是,即使你试图执行一个GET请求,由于它的批处理,它会作为POST请求通过网络传输,因此它不会被缓存。
我没有找到$batch
的使用方法。所以我用$filter
发送长时间的请求。它很容易:
DataServiceQuery<CLIENT> ordersQuery = DataServiceQuery<CLIENT>)this.context.CLIENTS.AddQueryOption("$filter", MyFilter());
其中MyFilter()
返回一个像这样的字符串:"ID_CLIENT = 1 or ID_CLIENT = 2"
注意:不要使用大写和。它导致和错误。使用and
不AND
我推迟到@Vitek's answer业务方案的问题:
OData itself doesn't limit the length of the Url
但如果别人谁抵达,因为这里IIS限制:,他们可以从我的回答中受益。按照这个错误的指示:
Verify the configuration/system.webServer/security/requestFiltering/[email protected] 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" ... />
我不明白如何回答OP的问题。这与URL长度过长有什么关系? – Jerther 2015-10-22 12:04:06