Ik heb een client die via simpleHTTP connect met een IIS server die een WCF service host. Deze service verwacht objecten die soms 'groot' zijn (zeg 1 MB) en sommige van onze clients zitten op trage internetlijnen.
Het volgende lijkt te gebeuren:
Ik vraag me af hoe dat kan. Ik kan op internet geen passsend antwoord vinden, behalve 'verhoog de timeout' maar dat is geen uitleg van de oorzaak van het fenomeen
.
Wat ik vooral vreemd vind is dat als een client een timeout geeft na 1 minuut hij direct door gaat met het volgende object wat hij moet verzenden. Ik kan begrijpen dat als de IIS server meer processing time neemt dan dat het kost om een bepaalde actie te doen, dat deze timeout resulteert op de client en dat de server (onwetend van deze timeout) toch doorgaat met zijn actie en dat hij alleen zijn antwoord niet meer kan terugzenden (want de client was al verdwenen). Wat ik niet begrijp is dat een timeout (hier trouwens bestempeld als 'operation timeout' eigenlijk geen 'operation timeout' is maar een 'message transfer timeout') resulteert in het doorgaan van de client met het volgende object maar dat het zo lijkt te zijn dat in de achtergrond de transfer door de client alsnog wordt afgemaakt parallel (??) met het volgende object waar hij inmiddels al aan begonnen is.
Ik verwacht dat als het je als client niet lukt om de parameters voor een remote method op tijd te verzenden, je dan bij een timeout ook NIET doorgaat met het verzenden van deze data!
Wat nu dus gebeurt is dat een client aanneemt 'timeout: dus data niet verzonden' en de server uiteindelijk de data wel volledig krijgt maar het antwoord 'klaar: true, ik heb alles gehad' niet meer terug kan zenden.
Het volgende lijkt te gebeuren:
- De client roept de 'remote method' aan en stuurt daarbij het grote object naar de IIS hosted WCF service
- De timeout van 1 minuut verstrijkt en de client onderschept de 'timeout' exception en gaat verder met het volgende object.
Ik vraag me af hoe dat kan. Ik kan op internet geen passsend antwoord vinden, behalve 'verhoog de timeout' maar dat is geen uitleg van de oorzaak van het fenomeen
Wat ik vooral vreemd vind is dat als een client een timeout geeft na 1 minuut hij direct door gaat met het volgende object wat hij moet verzenden. Ik kan begrijpen dat als de IIS server meer processing time neemt dan dat het kost om een bepaalde actie te doen, dat deze timeout resulteert op de client en dat de server (onwetend van deze timeout) toch doorgaat met zijn actie en dat hij alleen zijn antwoord niet meer kan terugzenden (want de client was al verdwenen). Wat ik niet begrijp is dat een timeout (hier trouwens bestempeld als 'operation timeout' eigenlijk geen 'operation timeout' is maar een 'message transfer timeout') resulteert in het doorgaan van de client met het volgende object maar dat het zo lijkt te zijn dat in de achtergrond de transfer door de client alsnog wordt afgemaakt parallel (??) met het volgende object waar hij inmiddels al aan begonnen is.
Ik verwacht dat als het je als client niet lukt om de parameters voor een remote method op tijd te verzenden, je dan bij een timeout ook NIET doorgaat met het verzenden van deze data!
Wat nu dus gebeurt is dat een client aanneemt 'timeout: dus data niet verzonden' en de server uiteindelijk de data wel volledig krijgt maar het antwoord 'klaar: true, ik heb alles gehad' niet meer terug kan zenden.