I have the following problem.
I host a WCF application in IIS 8 that only accepts HTTPS requests with client certificates. This service receives POST messages, which can vary in size (from a few bytes to 1 GB) and are received in most cases in parallel.
Clients receive a too large 413 Request response in the following case:
- When multiple connections are opened with the same client certificate , a large number of small files are downloaded. In this case, one request is successful, and all the others fail with error 413.
The problem can be solved by setting the value uploadReadAheadSizeto a larger value than the sum of all sizes of parallel calls in the system.webServer/serverRuntimeconfiguration section , but this forces the server to allocate all the memory for the read buffer forward for each call, which leads to the server running out of memory in case of many simultaneous calls.
My configuration works if calls are made using different client certificates or if one large file is uploaded.
I read that with IIS 6 there was an opportunity to install SSLAlwaysNegoClientCertin the configuration to fix a similar error. I tried using workarounds to set this value, but failed to use IIS 8.0. I also tried disabling the SSL client cache in order to disable SSL session renewal, but this also did not help solve my problem.
What can lead to 413 errors? Is there a way to enable multiple concurrent downloads with a client certificate to the same server without using all server memory.
source
share