Die Dokumentation zu diesem Thema ist schlecht. Ich verwende WCF-Dienste mit NetTcpBinding, das im Windows-Dienst gehostet wird. Das Problem ist, dass eine Sitzung gelöscht wird, wenn sie für einige Zeit inaktiv ist. Was ich brauche, ist die Sitzung, die immer am Leben ist. Ist WCF zuverlässige Sitzung etwas, das helfen kann? Oder kann ich nur mit Timeout-Einstellungen spielen?Was ist der Zweck der WCF-Sitzung?
Antwort
Nein, eine zuverlässige Sitzung wird wie jede andere Sitzung ausgezählt. Die Hauptfrage ist wirklich: Warum in aller Welt wollen Sie, dass Ihre Sitzungen "endlos" sind? Wenn Sie das wirklich brauchen, müssen Sie die Timeouts in der Sitzung erhöhen.
Der Punkt einer zuverlässigen Sitzung ist, dass der Anrufer über alle verlorenen Nachrichten informiert wird. Entgegen der landläufigen Meinung kann die zuverlässige Sitzung die Zustellung einer Nachricht nicht garantieren - aber wenn eine Nachricht nicht zugestellt werden kann, wird zumindest der Anrufer davon erfahren.
prüfen einige dieser Ressourcen für mehr Hintergrundinformationen aus:
wenn Sie das Programm nicht verwenden, es wird geschlossen nach einer Weile. können Sie das Standard-Timeout (das ist 10 min) von der Bindung ändern.
NetTcpBinding binding = new NetTcpBinding();
binding.ReceiveTimeout = TimeSpan.MaxValue;
binding.ReliableSession.InactivityTimeout = TimeSpan.MaxValue;
mehr lesen bei MSDN
- 1. Was ist der Zweck von. * \\?
- 2. Datenbankschwenkung - was ist der Zweck?
- 3. Was ist der Zweck der `Pass` Aussage?
- 4. Was ist der Zweck der CRX-Datei?
- 5. Was ist der Zweck der Prozedur Verknüpfungstabelle?
- 6. Was ist der Zweck der SQL-Sprache?
- 7. Was ist der Zweck der Annotation @ ConditionalOnProperty?
- 8. Was ist der Zweck der Einheitslinse?
- 9. Was ist der Zweck der statischen hier?
- 10. Was ist der Zweck der Winkel-Sanitize?
- 11. Was ist der Zweck der WS-Adressierung?
- 12. Was ist der Zweck der Akka Erweiterung?
- 13. Was ist der Zweck der verschiedenen * Zieleigenschaften?
- 14. Was ist der Zweck der API React.addons.batchedUpdates?
- 15. Was ist der Zweck der `qt_noop`
- 16. Was ist der Zweck der Option -lrt?
- 17. Was ist der Zweck der WiederverwendungIdentifier?
- 18. Was ist der Zweck von Membership.ValidateUser ist()
- 19. Was ist der Zweck von PDB-Dateien?
- 20. Was ist der Zweck von layout.xml?
- 21. Was ist der Zweck von $ _POST?
- 22. Was ist der Zweck von git-mv?
- 23. Was ist der Zweck von jquery.mobile.structure?
- 24. Was ist der Zweck von character_set_connection?
- 25. Was ist der Zweck von JNDI
- 26. Was ist der Zweck von Instanzvariablen?
- 27. Was ist der Zweck von Microsoft.Net.Compilers?
- 28. Was ist der Zweck von: nach?
- 29. QTPLUGIN, was ist der Zweck davon?
- 30. Was ist der Zweck von UIWindow?
Dank für die Klärung, was zuverlässige Sitzung für ist. In Bezug auf "endlose" Sitzung: Ich habe ein ereignisgesteuertes System. Wenn eine Nachricht kommt, sollte der Client einen WCF-Dienst aufrufen. Nachrichten können jede Sekunde kommen und es ist wichtig, mit jedem Schritt Schritt zu halten. Manchmal kann das Intervall zwischen dem Empfang einer Nachricht viel länger als eine Sekunde sein, beispielsweise ein oder zwei Tage. Also brauche ich einen Keep-Alive-Mechanismus. –
@bsnote: warum? Wenn das Intervall zwischen zwei Nachrichten zwei Tage beträgt, hat es wirklich keinen Sinn, diese Sitzung zu starten und aktiv zu sein, meiner Meinung nach. –
Es ist zu teuer, jedes Mal einen Kanal zu erstellen, wenn eine Nachricht empfangen wird, wenn Nachrichten gesendet werden werden jede Sekunde empfangen. Obwohl ich stimme zu, dass es keinen Sinn hat, eine Sitzung zu haben, wenn das Intervall einen Tag beträgt. –