如何在服务结构中为服务远程调用设置超时

时间:2017-11-15 20:28:42

标签: c# timeout azure-service-fabric remoting

我有一个服务架构服务,我从另一个服务中这样称呼:

var checkerProxy = new ServiceProxyFactory<ICheck>(uri);
var checker = checkerProxy.CreateSingletonServiceProxy();
success = await checker.CheckMe();

如果超时超时,我想中止通话。

如何在服务结构中为远程调用设置超时?

编辑1:注意我可以这样做:

success = checker.CheckMe().Wait(TimeSpan.FromSeconds(10));

但这不会中止远程调用,但只会在超时时停止等待任务完成,并且我没有返回值。

1 个答案:

答案 0 :(得分:4)

您可以使用FabricTransportRemotingSettings设置代理超时:

            FabricTransportRemotingSettings settings = new FabricTransportRemotingSettings();
            settings.OperationTimeout = TimeSpan.FromMinutes(5);

            return new ServiceProxyFactory(
                (h) =>
                {
                    return new FabricTransportServiceRemotingClientFactory(settings);
                });