Mam następujący problem.Uzyskiwanie błędów 413 w usługach IIS z równoczesnymi sesjami przy użyciu tego samego certyfikatu klienta HTTPS
Jestem gospodarzem aplikacji WCF na serwerze IIS 8, która akceptuje tylko żądania HTTPS z certyfikatami klienta w postaci tylko. Ta usługa akceptuje komunikaty POST, które mogą mieć różny rozmiar (od kilku bajtów do 1 GB) i są odbierane równolegle przez większość czasu.
Klienci są coraz podmiotu 413 zażądać zbyt dużą odpowiedź w następującym przypadku:
- Przy wielu połączeń są otwarte z samego certyfikatu na klienta i wiele małych plików są przesyłane. W takim przypadku jedno żądanie zakończy się sukcesem, a wszystkie inne zawiodą z błędem 413.
Problem ten może być rozwiązany przez ustawienie wartości do większej wartości niż suma wszystkich równoległych rozmiarów połączeń w przekroju system.webServer/serverRuntime
konfiguracji uploadReadAheadSize
, ale powoduje, że serwer przydzielić całą ilość pamięci dla bufor do odczytu dla każdego wywołania, który powoduje, że serwerowi brakuje pamięci w przypadku wielu jednoczesnych wywołań.
Moja konfiguracja działa czy połączenia są wykonane z różnych certyfikatów klienta lub w przypadku przesyłania jednego dużego pliku.
Przeczytałem, że z IIS 6 była opcja ustawienia SSLAlwaysNegoClientCert
w konfiguracji, aby naprawić podobny błąd. Próbowałem ustawić workarounds, aby ustawić tę wartość, ale nie udało się użyć IIS 8.0. Próbowałem również wyłączyć pamięć podręczną klienta SSL, aby wyłączyć wznawianie sesji SSL, ale to też nie rozwiązało mojego problemu.
Co może powodować błędy 413? Czy istnieje sposób, aby włączyć wiele równoległych przesyłanie z certyfikatu klienta do tego samego serwera bez korzystania z całej pamięci serwera.
Czy próbowałeś jakiegoś podejścia do wewnętrznego dzielenia wiadomości na mniejsze rozmiary? –
To jest usługa przesyłania strumieniowego z interfejsem API REST. Tak samo będzie w przypadku przesyłania z tymi samymi certyfikatami klienta z wielu lokalizacji. – hpityu
Czy możesz dołączyć swoją umowę serwisową? Zakładam, że albo nie używasz strumienia, albo używasz 'TransferMode = Buffered' – Aron