Wie kann eine Ausführungszeit für eine Anforderung des WCF-Dienstes begrenzt werden?

8

Gibt es in der WCF-Konfiguration etwas, das eine Zeitüberschreitung für die Ausführung einer Anfrage auf der Dienstseite definiert? Z.B. Der WCF-Dienst beendet die Ausführung der Anforderung nach einiger Zeit. Ich habe einen Service, der je nach Kundeneingang etwas Arbeit leistet. In einigen Fällen kann ein solcher Anruf zu viel Zeit in Anspruch nehmen. Ich möchte die Ausführungszeit solcher Anfragen auf der Serviceseite beschränken, nicht auf Clientseite, die SendTimeout verwendet. Ich kenne die OperationTimeout-Eigenschaft, aber sie bricht die Dienstanforderung nicht ab, sie teilt einem Client lediglich mit, dass die Anforderung abgelaufen ist.

    
Kamarey 31.05.2010, 13:47
quelle

1 Antwort

16

Im Allgemeinen gibt es nichts, was dies vollständig erzwingt. Leider ist es eines der Dinge, die die Laufzeit nicht wirklich gut durchsetzen kann, ohne dass der Zustand durcheinander gebracht werden kann (so gut wie die einzige Alternative wäre, den laufenden Thread abzubrechen, und das hat eine Reihe unerwünschter Konsequenzen).

Wenn Sie also aktiv etwas durchsetzen möchten, ist es viel besser, Ihren Dienst so zu gestalten, dass die Ausführung der Operation sichere Unterbrechungspunkte enthält, an denen die Operation beendet werden kann, wenn die maximale Ausführungszeit erreicht ist wurde überschritten.

Obwohl es viel mehr Arbeit ist, werden Sie auf lange Sicht wahrscheinlich zufriedener damit sein.

    
tomasr 31.05.2010, 17:05
quelle

Tags und Links