.net HttpClient在设置Timeout.Infinite后仍超时

.net HttpClient在设置Timeout.Infinite后仍超时,.net,xamarin,xamarin.forms,dotnet-httpclient,.net,Xamarin,Xamarin.forms,Dotnet Httpclient,我正在使用HttpClient从服务器获取Xamarin表单中的数据使用以下代码 public Task<HttpResponseMessage> sendData(String url,String jsonData) { using (var client = new HttpClient()) { var jsonContent = new StringContent(jsonData, System.Tex

我正在使用
HttpClient
从服务器获取
Xamarin表单中的数据
使用以下代码

public  Task<HttpResponseMessage> sendData(String url,String jsonData)
    {

        using (var client = new HttpClient())
        {

            var jsonContent = new StringContent(jsonData, System.Text.Encoding.UTF8, "application/json");

            client.Timeout = TimeSpan.FromMilliseconds(Timeout.Infinite);
            client.BaseAddress = new Uri(baseAddress);

            return  client.PostAsync(new Uri(url, UriKind.Relative), jsonContent);
        }
    }

尝试使用System.Threading.Timeout命名空间中的InfiniteTimeSpan

client.Timeout = System.Threading.Timeout.InfiniteTimeSpan;

我正在我的Xamarin项目中使用它,它似乎工作得很好。

尝试使用System.Threading.Timeout命名空间中的InfiniteTimeSpan

client.Timeout = System.Threading.Timeout.InfiniteTimeSpan;

我正在我的Xamarin项目中使用它,它似乎工作得很好。

我尝试了以下Android和iOS代码,它似乎工作得很好,在使用webservice获取数据时,可以在socket上稍等一会儿

Xamarin.Android
中使用以下代码,并使用
DependencyService

 public HttpClientHandler GetHttpClientHandler()
        {

            Xamarin.Android.Net.AndroidClientHandler http = new Xamarin.Android.Net.AndroidClientHandler();
            http.ReadTimeout = TimeSpan.FromMinutes(5.0);   


            return http;
        }
Xamarin.iOS
中使用以下代码,并使用
DependencyService

HttpMessageHandler IHttpHandler.GetHttpHandler()
{


    NSUrlSessionConfiguration sessionConfig = NSUrlSessionConfiguration.DefaultSessionConfiguration;
    sessionConfig.TimeoutIntervalForRequest = 300;
    sessionConfig.TimeoutIntervalForResource = 300;
    sessionConfig.WaitsForConnectivity = true;


    NSUrlSessionHandler sessionHandler = new NSUrlSessionHandler(sessionConfig);

    return (sessionHandler);
}
注意:如果是iOS,它将返回
HttpMessageHandler

Xamarin.Forms中的用法

   HttpClient client = new HttpClient(DependencyService.Get<IHttpClientHandler>().GetHttpClient());
HttpClient=newhttpclient(DependencyService.Get().GetHttpClient());

然而,这里有一个问题,在iOS的情况下,如果应用程序使用HttpClient获取数据,并且如果用户在iPhone中按下锁定按钮锁定屏幕,则服务会立即中断,并引发连接中断,插座也会关闭。如果有人能找到任何解决方案,那么请随意发布

我已经尝试了以下Android和iOS代码,它似乎可以工作,并且在使用webservice获取数据时可以在socket上稍等一会儿

Xamarin.Android
中使用以下代码,并使用
DependencyService

 public HttpClientHandler GetHttpClientHandler()
        {

            Xamarin.Android.Net.AndroidClientHandler http = new Xamarin.Android.Net.AndroidClientHandler();
            http.ReadTimeout = TimeSpan.FromMinutes(5.0);   


            return http;
        }
Xamarin.iOS
中使用以下代码,并使用
DependencyService

HttpMessageHandler IHttpHandler.GetHttpHandler()
{


    NSUrlSessionConfiguration sessionConfig = NSUrlSessionConfiguration.DefaultSessionConfiguration;
    sessionConfig.TimeoutIntervalForRequest = 300;
    sessionConfig.TimeoutIntervalForResource = 300;
    sessionConfig.WaitsForConnectivity = true;


    NSUrlSessionHandler sessionHandler = new NSUrlSessionHandler(sessionConfig);

    return (sessionHandler);
}
注意:如果是iOS,它将返回
HttpMessageHandler

Xamarin.Forms中的用法

   HttpClient client = new HttpClient(DependencyService.Get<IHttpClientHandler>().GetHttpClient());
HttpClient=newhttpclient(DependencyService.Get().GetHttpClient());

然而,这里有一个问题,在iOS的情况下,如果应用程序使用HttpClient获取数据,并且如果用户在iPhone中按下锁定按钮锁定屏幕,则服务会立即中断,并引发连接中断,插座也会关闭。如果有人能找到解决方案,请随时发布

这是安卓还是iOS上的问题?您使用的是AndroidNativeClient吗?它发生在两个平台上,m在xamarin表单中使用它,而不是使用AndroidNativeClient检查这是在用户发送请求时使用大量块时处理的,我的问题是response@Hunt对于iOS使用:这是安卓还是iOS上的问题?您使用的是AndroidNativeClient吗?它发生在两个平台上,m在xamarin表单中使用它,而不是使用AndroidNativeClient检查这是在用户发送请求时使用大量块时处理的,我的问题是response@Hunt对于iOS使用:我也尝试了相同的选项
client.Timeout=Timeout.InfiniteTimeSpan
但是没有Luckki也尝试了相同的选项
client.Timeout=Timeout.InfiniteTimeSpan
但是没有luckThanks@Hunt发布此消息。感谢@Hunt发布此消息。