Документация по этой теме оставляет желать лучшего. Я использую службы WCF с NetTcpBinding, размещенным в службе Windows. Проблема в том, что сеанс сбрасывается, если он неактивен в течение некоторого времени. Мне нужна сессия, которая всегда жива. Является ли надежный сеанс WCF чем-то, что может помочь? Или я могу просто играть с настройками тайм-аута?
Какова цель надежного сеанса WCF?
Ответы (2)
Нет, надежный сеанс также истечет по времени, как и любой другой сеанс. Главный вопрос на самом деле таков: с какой стати вы хотите, чтобы ваши сеансы были «бесконечными»?? Если вам это действительно нужно, вам нужно увеличить время ожидания сеанса.
Смысл надежного сеанса заключается в том, что вызывающий абонент будет знать о любых потерянных сообщениях. Вопреки распространенному мнению, надежная сессия не может гарантировать доставку сообщения, но если сообщение не может быть доставлено, по крайней мере, вызывающий абонент узнает об этом.
Ознакомьтесь с некоторыми из этих ресурсов для получения дополнительной справочной информации:
- Введение в надежный обмен сообщениями с помощью Windows Communication Foundation
- Демистификация надежного обмена сообщениями
- надежная доставка сообщений WCF
- Надежные сеансы с помощью WCF стали проще
если вы не пользуетесь каналом, то через некоторое время он сам закроется. вы можете изменить время ожидания по умолчанию (которое составляет 10 минут) из привязки.
NetTcpBinding binding = new NetTcpBinding();
binding.ReceiveTimeout = TimeSpan.MaxValue;
binding.ReliableSession.InactivityTimeout = TimeSpan.MaxValue;
дополнительные сведения см. в MSDN.