【发布时间】:2016-04-28 08:35:08
【问题描述】:
我正在开发与地磅连接的 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>
你能帮我做错什么吗? 我找不到解决办法。
【问题讨论】:
标签: c# wcf wsdualhttpbinding