2010-11-22 6 views
7

브라우저에는 URL 길이 제한이 있습니다. IE에는 URL 길이가 2K자를 넘지 않아야한다는 제한 사항이 있습니다.OData URL 길이 제한

$ filter equals 쿼리를 만들 때 여러 입력 값과 비교할 수 있습니다. 이 경우 URL 길이는 2K를 초과합니다.

OData는 URL의 길이에 제한을 설정합니까?

감사

답변

6

중 하나로, OData 자체는 URL의 길이를 제한하지 않지만, 대부분의 클라이언트와 서버 당신이 언급 한 바와 같이는 않습니다. 따라서 대개 URL을 너무 오랫동안 생성하지 않는 것이 좋습니다.

당신이 두 가지 가능한 해결 방법이있다 (is 연산자, 또는 비슷한 포함 구현)를 참조 문제 :

1) 당신을 위해 같은 쿼리를 처리하기 위해 서비스 작업을 사용합니다. 당신은 아마도 문자열이나 그와 비슷한 것으로 인코딩 된 다중 입력 값을 전달할 수 있습니다. 또는 어쨌든 서비스 연산이이를 알 수 있습니다.

2) 긴 $ 필터를 사용하지만 $ 일괄 요청으로 요청을 보냅니다. 장점은 Url의 제한이 훨씬 커지므로 가능성이 매우 낮습니다. 단점은 GET 요청을 실행하려고해도 $ 배치로 인해 웹을 통해 POST 요청으로 이동하므로 캐시되지 않는다는 것입니다.

0

$batch의 사용 방법을 찾지 못했습니다. 그래서 나는 긴 요청을 보내기 위해 $filter을 사용했다. 그것의 아주 쉽게 : "ID_CLIENT = 1 or ID_CLIENT = 2"

NB : 망가 대문자 AND를 사용하여이 같은 문자열이 반환 MyFilter()

DataServiceQuery<CLIENT> ordersQuery = DataServiceQuery<CLIENT>)this.context.CLIENTS.AddQueryOption("$filter", MyFilter()); 

. 그것은 오류로 연결됩니다. 사용 and하지 AND

+4

OP의 질문에 답변하는 방법을 모르겠습니다. URL 길이가 너무 길면 어떻게 관련이 있습니까? – Jerther

1

나는 OP의 질문에 @Vitek's answer에 연기 :

OData itself doesn't limit the length of the 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/[email protected] setting in the applicationhost.config or web.config file.

이 지침에 따라이 기술은 herehere을 설명 The length of the query string for this request exceeds the configured maxQueryStringLength value.

, 그것은 다음과 같습니다 당신은이 오류가 발생할 수 있습니다

<configuration> 
    <system.webServer> 
    <security> 
     <requestFiltering> 
     <requestLimits maxQueryString="50000"> 
     </requestLimits> 
     ... 

이 :

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