5
次の問題があります。同じHTTPSクライアント証明書を使用して同時セッションでIISで413のエラーが発生する
を受け入れるIIS 8でWCFアプリケーションをホストしています。クライアント証明書を使用したHTTPS要求。このサービスは、サイズが異なる(数バイトから1GBまで)POSTメッセージを受け取り、ほとんどの場合、並列に受信されます。
クライアントは、次のような場合で413要求エンティティが大きすぎる応答を得ている:
- 複数の接続が同じクライアント証明書と多くの小さなファイルを開くと、アップロードされています。この場合、1つの要求は成功し、他のすべての要求は413のエラーで失敗します。
問題は、構成のsystem.webServer/serverRuntime
セクション内のすべての並列コールサイズの合計よりも大きな値にuploadReadAheadSize
値を設定することによって解決することができるが、これはのためにメモリの全体量を割り当てるサーバーを引き起こします多くの同時呼び出しの場合にサーバーのメモリが不足する各呼び出しの先読みバッファー。コールが異なるクライアント証明書を使用して、または1つの大きなファイルをアップロードする場合に行われる場合を作品
マイ設定。
私は、IIS6では、同様のバグを修正するために構成内にSSLAlwaysNegoClientCert
を設定するオプションがありました。私はこの値を設定するのにworkaroundsを試しましたが、IIS 8.0を使用して成功しませんでした。 SSLセッションの再開を無効にするためにSSLクライアントキャッシュを無効にしようとしましたが、それでも問題は解決しませんでした。
413エラーの原因は何ですか?サーバーのメモリ全体を使用せずに、クライアント証明書を使用して複数のパラレルアップロードを同じサーバーに有効にする方法はありますか。
もっと小さなサイズにメッセージを内部的に分割する方法はありますか? –
これはREST APIを使用したストリーミングアップロードサービスです。しかし、複数の場所から同じクライアント証明書をアップロードする場合も同じことが起こります。 – hpityu
サービス契約を含めることができますか?私はストリームを使用していないか、 'TransferMode = Buffered'を使用していると仮定します。 – Aron