Я разрабатываю сервис WCF, который связан с весами. Мы хотели бы отправлять сообщения всем подключенным клиентам при изменении веса. С одними весами может быть подключен только один клиент, поэтому я разработал WCF, который общается с клиентами с помощью wsDualHttpBinding и обратных вызовов.
Это решение работает, но через долгое время (1-2 дня) служба WCF перестает отправлять обратные вызовы. Я знаю, что моя служба работает, потому что у меня есть регистратор, но мои клиенты не получают обратных вызовов. Мой сервис также не генерирует исключений.
Это мой сервисный псевдокод
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant, InstanceContextMode = InstanceContextMode.PerSession)]
public sealed class WeightbridgeService : IWeightbridgeService, IDisposable
public WeightbridgeService()
{
this.callback = OperationContext.Current.GetCallbackChannel<IWeightbridgeServiceCallback>();
weighbridge.WeightChanged += WeightChangedEventHandler;
timer.Elapsed += TimerOnElapsed;
timer.Start();
}
private void TimerOnElapsed(object sender, ElapsedEventArgs elapsedEventArgs)
{
timer.Stop();
this.callback.SendWeightData(this.weightData);
timer.Start();
}
и конфигурация
<bindings>
<wsDualHttpBinding>
<binding name="longTimeoutBinding" receiveTimeout="00:45:00" sendTimeout="00:45:00" openTimeout="00:45:00" closeTimeout="00:45:00" >
<reliableSession inactivityTimeout="00:45:00" />
<security mode="None"/>
</binding>
</wsDualHttpBinding>
</bindings>
Не могли бы вы помочь мне, что я сделал неправильно? Я не могу найти решение для него.