次の問題があります。
クライアント証明書を使用したHTTPS要求のみを受け入れるIIS8でWCFアプリケーションをホストしています。このサービスは、サイズが異なる可能性のあるPOSTメッセージ(数バイトから最大1 GB)を受け入れ、ほとんどの場合並行して受信されます。
次の場合、クライアントは413Requestエンティティの応答が大きすぎます。
- 同じクライアント証明書で複数の接続が開かれ、多くの小さなファイルがアップロードされた場合。この場合、1つの要求は成功し、他のすべての要求は413エラーで失敗します。
uploadReadAheadSize
この問題は、構成のセクションにあるすべての並列呼び出しサイズの合計よりも大きい値に値を設定することで解決できますsystem.webServer/serverRuntime
が、これにより、サーバーは呼び出しごとに先読みバッファーに全量のメモリーを割り当てます。同時呼び出しが多い場合、サーバーのメモリが不足します。
私の構成は、異なるクライアント証明書を使用して呼び出しが行われた場合、または1つの大きなファイルをアップロードした場合に機能します。
SSLAlwaysNegoClientCert
IIS 6では、同様のバグを修正するために構成を設定するオプションがあったことを読みました。この値を設定するための回避策を試しましたが、IIS8.0を使用しても成功しませんでした。また、SSLクライアントキャッシュをオフにしてSSLセッションの再開を無効にしようとしましたが、それでも問題は解決しませんでした。
413エラーの原因は何ですか?サーバーのメモリ全体を使用せずに、同じサーバーへのクライアント証明書を使用した複数の並列アップロードを有効にする方法はありますか?