2010-11-22 31 views
7

ブラウザにはURLの長さに制限があります。 IEでは、URLの長さが2K文字を超えないように制限されています。ODataのURLの長さの制限

私が$ filter equalsクエリを作成するとき、私は複数の入力値と比較することができました。このような場合、Urlの長さは2Kを超えます。

ODataは、URLの長さに制限を設定しますか?

おかげ

答えて

6

のOData自体は、URLの長さを制限しませんが、あなたが述べたように、ほとんどのクライアントとサーバが行います。だから、通常はURLをあまり長く作っていないのが実用的です。あなたのために、このようなクエリを処理するために、サービス操作を使用します)

1:

あなたはを参照してください問題(オペレータ、または類似のものが含まれています実装は)2つの回避策があります。多分、文字列あるいはそれに類するものとしてコード化された複数の入力値を渡すことができます。あるいは、サービス操作は、これらを前もって知っているかもしれません。

2)長い$フィルタを使用しますが、$バッチ​​要求で要求を送信します。利点は、URLの制限がはるかに大きく、あなたがそれを打つことはほとんどないということです。欠点は、GET要求を実行しようとしているにもかかわらず、$バッチ​​のためにWeb上でPOST要求として移動するため、キャッシュされません。

0

$batchの使用方法が見つかりませんでした。私は長いリクエストを送信するために$filterを使用しました。そのかなり簡単:"ID_CLIENT = 1 or ID_CLIENT = 2"

NB:いけない大文字を使用して、このような文字列を返す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場合:​​を、彼らは私の答えから利益を得ることができます。そのエラーの指示に従ってください:

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" ... /> 
関連する問題