OData Url长度限制

时间:2010-11-22 16:59:10

标签: odata

浏览器对网址的长度有限制。 IE有限制,Url长度不应超过2K字符。

当我形成$ filter equals查询时,我可以与多个输入值进行比较。在这种情况下,Url的长度将超过2K。

OData是否对Url的长度设置了任何限制?

由于

2 个答案:

答案 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.

此技术描述为herehere,它看起来像这样:

<configuration>
    <system.web>
        <httpRuntime maxQueryStringLength = "50000" ... />