WCF阻止NetNamedPipeBinding超时

时间:2018-06-01 13:58:18

标签: c# .net wcf service

我创建了一个简单的客户端服务设置,用于从服务器下载应用程序。客户端创建NetNamedPipeBinding并使用它来打开包含该服务的通道以启动下载过程。

private void OpenServiceChannel()
    {            
        InstanceContext instanceContext = new InstanceContext(this);

        NetNamedPipeBinding binding = new NetNamedPipeBinding();

        DuplexChannelFactory<ICloudProductService> duplexChannelFactory = new DuplexChannelFactory<ICloudProductService>(instanceContext, binding, new EndpointAddress(ADDRESS));

        _proxy = duplexChannelFactory.CreateChannel();
    }

然后,该服务在同一频道上使用Callback向客户端报告进度。此回调被定义为ServiceContract的一部分:

[ServiceContract(CallbackContract = typeof(IStatusProgressCallback))]
public interface ICloudProductService
{

    [OperationContract]
    [FaultContract(typeof(ServiceErrorCode))]
    Task<IEnumerable<LauncherAppDetails>> GetAvailableApps(string tokenJson);

    [OperationContract]
    [FaultContract(typeof(ServiceErrorCode))]
    Task Install(string tokenJson, LauncherAppDetails app);
}

当服务在需要增加下载进度时触发所述回调中的事件

public interface IStatusProgressCallback
{

    [OperationContract]
    void OnProgressUpdated(InstallProgress progress);

}

这一切都适用于任何一半体面的互联网连接,因为下载非常快。我的问题是,在慢速连接上,下载的时间超过了绑定的1分钟默认超时。我可以增加此绑定的超时但我担心这不是一个理想的解决方案,因为可能的安全/性能问题是不好的做法。

有没有办法在客户端配置绑定,以便在每次成功回调(保持活动)时刷新超时时间,这样只要服务器传递增量下载进度,连接就不会有时间进行。

0 个答案:

没有答案