2016-05-09 49 views
3

現在、ASP.NET MVCのWebサイトで作業していますが、正常に動作しています。要求ヘッダーのサイズが長すぎます

しかし私は全く理解していないという問題があります...私はChromeでVisual Studio上でウェブサイトを起動すると問題はありませんが、Firefoxを停止してFirefoxで他のテストを開始しようとするとたとえば、私のURLが大きくなり、このエラーが発生します。

HTTP 400です。要求ヘッダーのサイズが長すぎます。

これはなぜ起こっているのですか?それは私のコードで何か、それともIIS Expressや他の何かから来ていますか?事前に

おかげ

+3

[Bad Request - 要求が長すぎるHTTPエラー400です。要求ヘッダーのサイズが長すぎます](http://stackoverflow.com/questions/14778910/bad-request- request-too-long-http-error-400-the-size-of-the-request-headers-i) – CodeCaster

+0

あなたは私たちにhttpリクエストを返すことができますか? – Mediator

+0

ブラウザのデバッグツールまたはFiddlerのようなプロキシを使用して、実際に何が起こっているかを確認します。そこから、より多くの研究をすることができます。与えられた情報で、私たちは何もすることはできません。たとえば、[不正なリクエスト - リクエストが長すぎるHTTPエラー400をリクエストしてください。リクエストヘッダーのサイズが長すぎます](http://stackoverflow.com/questions/14778910/bad-request-request-too-long-http-error -400-the-size-of-the-request-headers-i)。 – CodeCaster

答えて

3

チェックMSDN

原因

ユーザーが多くのActive Directoryのユーザーグループのメンバーである場合、この問題が発生することがあります。ユーザーが多数の アクティブディレクトリグループのメンバである場合、ユーザーのKerberos認証トークン が増加します。ユーザーがIIS サーバーに送信するHTTP要求には、KerberosトークンがWWW-Authenticateヘッダーに含まれ、 グループの数が増えるにつれてヘッダーサイズが増加します。 HTTPヘッダーまたはパケットサイズが IISで構成された制限を超えて増加した場合、IISは要求を拒否し、このエラーを応答として送信することがあります。

解像度

は、この問題を回避するには、次のいずれかのオプションを選択します:

A)ユーザーがの メンバーであるActive Directoryグループの数を減らします。ユーザの要求ヘッダーがあまりに 長い間考えられていないので、

OR

B)は、IISサーバー上でMaxFieldLengthとMaxRequestBytesのレジストリ設定 を変更します。 MaxFieldLength とMaxRequestBytesのレジストリエントリのための適切な設定を判断するには、以下の の計算を使用します。

  1. は、トークン次の資料に記載される式を使用してユーザーのKerberosの大きさを計算します。

    新ユーザーが多数のグループに所属している場合のKerberos認証の問題の解決 http://support.microsoft.com/kb/327825

  2. tのMaxFieldLengthおよびMaxRequestBytesレジストリキーを構成します。彼は4/3 * Tの値を持つIISサーバーを使用します。ここで、Tはユーザーのトークンのサイズ(単位:バイト)です( )。 HTTPは、base64エンコーディング を使用してKerberosトークンをエンコードするため、トークン内のすべての3バイトを4 base64 エンコードバイトで置き換えます。レジストリに加えられた変更は、HTTPサービスを再開するまでは になりません。また、 を使用して、関連するすべてのIISサービスを再起動することもできます。

+3

これは、非常に具体的な原因の1つで、このエラーの修正です。つまり、「この問題は、ユーザーが多くのActive Directoryユーザーグループのメンバーである場合に発生する可能性があります」_。 OPはこれが事実であることを確認していない。 – CodeCaster

+1

も参照してください[[web.configのヘッダーサイズの制限は、レジストリのhttp.sysの制限を上書きしますか?](// stackoverflow.com/q/35749180) –

+0

このエラーのOPの特定のインスタンスの問題かどうかにかかわらず、私のインスタンスの問題であり、非常に役に立ちます。ありがとうございました。 – briantist

2

お使いのブラウザがサーバーに送信されているクッキーの量や大きさを見てみましょう。クッキーをクリアしてからもう一度やり直して、使用するクッキーのサイズと量を最小限に抑えることができるかどうかを確認してください。たとえば、モバイルブラウザでは、これは大きな問題になる可能性があります。

また、クエリ文字列が大きすぎると影響を受けることがあります。

2

この

<system.web> 
     <httpRuntime maxRequestLength="2097151" executionTimeout="2097151" /> 
</system.web> 

maxRequestLengthデフォルトサイズは、4096キロバイト(4 MB)でみてください。

ブラウザが何らかのリソースを何度も何度もリクエストした場合、要求ヘッダーの値の長さが何回も増えるため、要求の長さを最大長に拡張しようとする可能性があります。 これは役に立ちます。

+0

このコードは問題の解決に役立つかもしれませんが、 _why_および/または_how_に関する追加の文脈を提供すると、 はその質問に答えて、 長期値を大幅に改善します。あなたの答えを編集して の説明を追加してください。 –

+1

maxRequestLengthのデフォルトは4 MBです。このようなエラーのためにはかなり制限があります。 –

関連する問題