【问题标题】:CloudTableClient client side timeoutCloudTableClient 客户端超时
【发布时间】:2017-06-13 15:28:30
【问题描述】:
使用 CloudTableClient 时,有没有办法指定 client 端超时?
TableRequestOptions RetryPolicy 和 ServerTimeout 控制重试尝试的次数、尝试之间的延迟和存储服务端超时,但似乎没有涵盖客户端每次尝试超时(如 HttpClient.Timeout 属性)。
我对依赖 ServerSideTimeout 的担忧在于延迟连接到实际服务器。
【问题讨论】:
标签:
c#
azure
azure-storage
azure-table-storage
【解决方案1】:
使用 CloudTableClient 时,有没有办法指定客户端超时?
TableRequestOptions 的MaximumExecutionTime 属性可以帮助我们确定所有可能重试请求的最大执行时间,包括客户端和服务器端使用的时间。
tableClient.DefaultRequestOptions.MaximumExecutionTime = new TimeSpan(0, 0, 0, 0, 100);
如果无法在特定时间内处理请求,则会引发异常。
Microsoft.WindowsAzure.Storage.StorageException: 'The client could not finish the operation within specified timeout.'
类似于 HttpClient.Timeout 属性
HttpClient 的 Timeout 属性还指定了响应返回之前的所有执行时间。
我希望找到每次重试超时。
我建议你使用MaximumExecutionTime。如果您需要客户端 DNS 解析超时,您可以获取或设置 ServicePointManager 的 DnsRefreshTimeout 属性。
ServicePointManager.DnsRefreshTimeout = 4*60*1000; // 4 minutes