在某个时刻,我们发现我们应用中所有请求在iOS上的超时时间都是60秒,尽管我们将使用的HTTP框架的默认值设置为3分钟。我尝试了以下代码片段来确定是否是库出现了问题:
try
{
using (var http = new HttpClient())
{
http.Timeout = TimeSpan.FromMinutes(1.5);
await http.GetAsync("https://httpstat.us/200?sleep=70000");
}
}
catch (Exception ex)
{
}
尽管设置了超时时间为90秒并且请求进行了70秒,但此代码仍会因超时异常而失败。原来它未覆盖默认的60秒超时时间。在新项目中,相同的代码可以正常工作。
在项目文件中,我们有
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
。
NSUrlSessionHandler
代码,它们不会更改默认的NSUrlSessionConfiguration参数,并且HttpClient选项不会被“传递”,因为更改默认参数并不是很“礼貌”。 - SushiHangover.ator
中为NSUrlSessionHandler
提供自己的NSUrlSessionConfiguration
。 - SushiHangover