2008-10-23 9 views
61

Wie funktionieren die Zeitüberschreitungen in WCF? Ich weiß zum Beispiel, dass Sie sendTimeout und receiveTimeout für eine Bindung von Clients konfigurieren können. Aber wie funktionieren sie?Timeouts WCF-Dienste

MSDN beschreibt Sendtimeout als:

einer Zeitspanne Wert, der das Zeitintervall für eine Sendeoperation vorgesehen spezifiziert abzuschließen. Dieser Wert sollte größer oder gleich bis Null sein. Der Standardwert ist 00:01:00.

Was sind Sendevorgänge/Empfangsvorgänge?

Antwort

61

Client-Seite:

  • Sendtimeout wird verwendet, um die Operation zu initialisieren, die zum Senden einer Nachricht, die die gesamte Interaktion regelt (einschließlich einer Antwortnachricht in einem Anforderung-Antwort-Fall empfängt). Dieses Zeitlimit gilt auch beim Senden von Antwortnachrichten von einer CallbackContract-Methode.
  • OpenTimeout und CloseTimeout werden beim Öffnen und Schließen von Kanälen verwendet (wenn kein expliziter Zeitüberschreitungswert übergeben wird).
  • ReceiveTimeout wird nicht verwendet.

Server-Seite:

  • Senden, Öffnen und Schließen Timeout gleiche wie auf Client (für Rückfragen).
  • ReceiveTimeout wird von der ServiceFramework-Schicht verwendet, um das Zeitlimit für die Sitzungsunterbrechung zu initialisieren.

Die Quelle ist Brian McNamara on MSDN forums.

+0

Dieser Link ist tot, kann jemand aktualisieren? – BrettRobi

+5

Link funktioniert für mich – Brian

+0

Wenn ich OperationTimeout auf einen sehr hohen Wert und sendTimeout auf einen lächerlich kleinen Wert, der im Wesentlichen Timeout sein sollte, bekomme ich nie eine Timeout-Ausnahme. Kann mir jemand sagen, wie ich ein Beispiel einrichten kann, um die sendTimeout-Ausnahme auszulösen? –

9

Siehe "Timeouts in WCF und die Standardwerte" http://blogs.msdn.com/b/hongmeig/archive/2010/03/06/timeouts-in-wcf-and-their-default-values.aspx

Timeouts auf bindungsSendTimeout, ReceiveTimeout, Opentimeout und Close. Sie können einfach über Config oder Code auf der Bindung eingestellt werden. Der Standardwert für diese ist 1 Minute.

ServiceHost hat OpenTimeout und CloseTimeout. Der Standardwert für OpenTimeout ist 1 Minute und der Standardwert für CloseTimeout ist 10 Sekunden.

Timeouts auf dem Client-Seitenkanal. Es gibt ein OperationTimeout, das kann, indem Sie den Kanal auf IContextChannel werfen. Der Standardwert ist ebenfalls 1 Minute. Ttimeout auf dem TCP-Transport, genannt ChannelInitializationTimeout, und sein Standardwert ist 5 Sekunden.

ASPNET.Es gibt eine Zeitüberschreitung beim Herunterfahren, genauso wie der Service-Host Timeout schließt, der Standardwert ist 90 Sekunden. ExecutionTimeout, genau wie unsere Operation Timeout, ist standardmäßig 110 Sekunden.