ブラウザには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つの回避策があります。多分、文字列あるいはそれに類するものとしてコード化された複数の入力値を渡すことができます。あるいは、サービス操作は、これらを前もって知っているかもしれません。
2)長い$フィルタを使用しますが、$バッチ要求で要求を送信します。利点は、URLの制限がはるかに大きく、あなたがそれを打つことはほとんどないということです。欠点は、GET要求を実行しようとしているにもかかわらず、$バッチのためにWeb上でPOST要求として移動するため、キャッシュされません。
$batch
の使用方法が見つかりませんでした。私は長いリクエストを送信するために$filter
を使用しました。そのかなり簡単:"ID_CLIENT = 1 or ID_CLIENT = 2"
NB:いけない大文字を使用して、このような文字列を返すMyFilter()
DataServiceQuery<CLIENT> ordersQuery = DataServiceQuery<CLIENT>)this.context.CLIENTS.AddQueryOption("$filter", MyFilter());
。それは間違いにつながる。 and
ないAND
を使用し、私は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.
は指示に従ってください:この手法はhereとhereに記載されている 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" ... />
私はOPの質問に答える方法がわかりません。これは、URLの長さが長すぎるとどう関連しますか? – Jerther