2

.NET アプリケーションにデータを送信する iPad アプリケーションがあります。iPad アプリケーションは、すべての要求を POST ではなく GET として実装したサルの群れによって作成されました。

アプリケーションは現在稼働しており、クライアントのデータが 20,000 文字を超えるリクエストを送信しているため、この応答が得られます (少なくとも 80,000 文字の URL で動作することがテストされている Safari を使用):

一般的な 414 エラー

詳細な IIS 応答の代わりに、たとえば、要求が web.config の requestFiltering/maxURL の値を超えた場合、次のようになります。

IIS 414.14 エラー

IIS 固有のメッセージではなく一般的なエラー メッセージが表示されるので、これは構成設定で修正できることが原因ではないと思われます (念のため、maxURL を 20 億に設定しています...)

リクエストは POST を使用する必要があることは理解していますが、現時点では iPad アプリケーションを書き直す時間がありません。私の調査では、「GET リクエストを 2K 文字に制限する必要があります」という役に立たない応答しか見つかりませんでした。 「GET の代わりに POST を使用する必要があります」。それが唯一のフィードバックである場合は、わざわざ回答しないでください。(たとえば、私はこの質問とその回答を認識しています。)

正しい方法で実行する時間ができるまで、この関数を作成するための簡単な回避策を投入できるかどうかを知る必要があります。また、具体的な情報が見つからないため、iOS 側または IIS 側のいずれかからの URL の長さの厳しい制限について誰かが知っているかどうかも疑問に思っています。

編集: 私の httpRuntime パラメータも、20,000 文字をはるかに超える文字を受け入れるように設定されています。

4

2 に答える 2

5

これが古いものであることは知っていますが、昨日のように誰かがそれに直面した場合に備えて、web.configパラメーターを設定しても役に立ちませんでした。私が見つけたのは、この MS の記事でした: http://support.microsoft.com/kb/820129/en-usHKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parametersに 2つ
の DWORD キーを追加しました。

MaxFieldLength = 65534
MaxRequestBytes = 100000

: これらのキーを機能させるには、サーバーまたは少なくとも HTTP サービスを再起動する必要があります。
再起動後、クエリ文字列の長さが最大 ​​32k 文字のリクエストを送信することができました (なぜ 32k 文字しかないのかわかりませんが、おそらく文字エンコーディングですか?)。したがって、これが Windows 2003 以降の URL の長さの制限であると思います。

于 2014-06-18T10:15:05.290 に答える
-1

これが複数のクライアントで発生している場合は、サーバーの設定に問題がある可能性があります。.NET 4.0 のセクションでは、とhttpRuntimeの両方の最大値は32 ビットの符号付き整数、つまり.maxUrlLengthmaxQueryStringLength2147483647

<httpRuntime maxUrlLength="2147483647" maxQueryStringLength="2147483647" />
于 2013-05-17T02:06:49.660 に答える