La documentación sobre este tema es deficiente. Uso servicios WCF con NetTcpBinding alojado en el servicio de Windows. El problema es que una sesión se corta cuando está inactiva por algún tiempo. Lo que necesito es la sesión que siempre está viva. ¿Es la sesión confiable de WCF algo que puede ayudar? ¿O puedo jugar con la configuración de tiempo de espera?¿Cuál es el propósito de la sesión confiable de WCF?
Respuesta
No, una sesión confiable finalizará como cualquier otra sesión. La pregunta principal realmente es: ¿por qué quieres que tus sesiones sean "interminables"? Si realmente necesita esto, necesita aumentar los tiempos de espera en la sesión.
El punto de una sesión confiable es que la persona que llama sabrá sobre cualquier mensaje que se pierda. Contrariamente a la creencia popular, la sesión confiable no puede garantizar la entrega de un mensaje, pero si no se puede entregar un mensaje, al menos la persona que llama lo sabrá.
retirar algunos de estos recursos para obtener más información de fondo:
si usted no utiliza el canal, se cerrará él mismo después de un tiempo. puede cambiar el tiempo de espera predeterminado (que es de 10 minutos) desde el enlace.
NetTcpBinding binding = new NetTcpBinding();
binding.ReceiveTimeout = TimeSpan.MaxValue;
binding.ReliableSession.InactivityTimeout = TimeSpan.MaxValue;
Ver más en MSDN
- 1. ¿Cuál es el propósito de WCF Service Library?
- 2. ¿Cuál es el propósito de una sesión JMS?
- 3. ¿Cuál es el propósito del control VisitorIdentification?
- 4. ¿Cuál es el propósito de `qt_noop`
- 5. ¿Cuál es el propósito de 'Class.forName ("MY_JDBC_DRIVER")'?
- 6. ¿Cuál es el propósito de precompiledApp.config?
- 7. ¿Cuál es el propósito de layout.xml?
- 8. ¿Cuál es el propósito de requestWindowFeature()?
- 9. ¿Cuál es el propósito de Mage_Core_Block_Template_Facade
- 10. ¿Cuál es el propósito de config.assets.precompile?
- 11. ¿Cuál es el propósito de String.IsInterned?
- 12. ¿Cuál es el propósito de IntentSender?
- 13. ¿Cuál es el propósito de utilizar NSOrderedSame?
- 14. ¿Cuál es el propósito de 'var'?
- 15. ¿Cuál es el propósito de git-mv?
- 16. ¿Cuál es el propósito de Membership.ValidateUser()
- 17. ¿Cuál es el propósito de Ext.require
- 18. WPF: ¿Cuál es el propósito de App.xaml?
- 19. ¿Cuál es el propósito de Anorm's Pk?
- 20. ¿Cuál es el propósito de Active Records?
- 21. ¿Cuál es el propósito de Rake?
- 22. ¿Cuál es el propósito de 'n = n'?
- 23. ¿Cuál es el propósito de Function.const?
- 24. ¿Cuál es el propósito de :: en C#?
- 25. ¿cuál es el propósito de glClear (GL_DEPTH_BUFFER_BIT)
- 26. ¿Cuál es el propósito de __cxa_pure_virtual?
- 27. ¿Cuál es el propósito de JNDI
- 28. ¿Cuál es el propósito de Array.GetLowerBound (int)?
- 29. ¿cuál es el propósito de Thread.holdsLock (lock)?
- 30. ¿Cuál es el propósito de la interfaz de marcador?
Gracias por aclarar lo que es fiable para la sesión. En cuanto a la sesión "sin fin": tengo un sistema basado en eventos. Cuando llega un mensaje, el cliente debe llamar a algún servicio WCF. Los mensajes pueden aparecer cada segundo y es importante mantenerse al tanto de cada uno. A veces, el intervalo entre la recepción de un mensaje puede ser mucho mayor que un segundo, digamos uno o dos días. Entonces necesito un mecanismo para mantenerme vivo. –
@bsnote: ¿por qué? Si el intervalo entre dos mensajes es de dos días, realmente no tiene sentido tener esa sesión activa todo el tiempo, en mi opinión ... –
Es demasiado caro crear un canal cada vez que se recibe un mensaje en caso de que los mensajes se reciben cada segundo. Aunque estoy de acuerdo en que no tiene sentido tener sesiones cuando el intervalo es de un día. –