Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么HttpClient';s GetStringAsync的速度太慢了?_C#_Windows Phone 8_Async Await_Portable Class Library - Fatal编程技术网

C# 为什么HttpClient';s GetStringAsync的速度太慢了?

C# 为什么HttpClient';s GetStringAsync的速度太慢了?,c#,windows-phone-8,async-await,portable-class-library,C#,Windows Phone 8,Async Await,Portable Class Library,我有一个WindowsPhone8项目,在那里我也使用了PCL(可移植类库)项目,因为我要构建一个Win8应用程序来支持它 然而,当调用我的api(在Azure中)时,我的HttpClient的GetStringAsync非常慢。我用datetime做了几个调试,GetStringAsync花了14秒!有时需要更长的时间 我正在做的是从我的Azure API站点检索简单的JSON。我的Android客户端可以在瞬间获得相同的数据。。。我有什么遗漏吗 设置非常简单: HttpClient clie

我有一个WindowsPhone8项目,在那里我也使用了PCL(可移植类库)项目,因为我要构建一个Win8应用程序来支持它

然而,当调用我的api(在Azure中)时,我的HttpClient的GetStringAsync非常慢。我用datetime做了几个调试,GetStringAsync花了14秒!有时需要更长的时间

我正在做的是从我的Azure API站点检索简单的JSON。我的Android客户端可以在瞬间获得相同的数据。。。我有什么遗漏吗

设置非常简单:

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("X-Token", "something");
string responseJSON = await client.GetStringAsync("url");
我把调试时间放在等待前后,中间是14秒


有人知道原因吗?

将GetStringAsync替换为GetString,以确保它实际上是异步的\Wait导致您的问题,而不是堆栈中的任何其他问题。

我遇到了同样的问题,并发现了这个问题。我的问题是HttpClient试图使用代理,但对大多数人来说,代理并不存在。这就是它慢的原因。将初始化更改为以下值,您将注意到显著的加速

HttpClientHandler hch = new HttpClientHandler();
hch.Proxy = null;
hch.UseProxy = false;

HttpClient client = new HttpClient(hch);

在调用堆栈中是否调用了其他异步方法?你总是在等待他们吗?有时一个缓慢的应用程序意味着你在某处使用
.Result
,而不是
等待。例如
string responseJSON=client.GetStringAsync(“url”).Result。Uri返回的字符串有多大?如果存在较大的速度差异,您是否尝试在WP8上使用WebClient?在网络浏览器中简单使用时,响应速度如何?@chue x我正在等待所有的响应,但目前我正在运行那个一个。我试过使用。结果需要永远@Martin Suchan字符串为2,99 KB“大”。我有一个简单的WP8项目和WebClient,在那里它工作得很好!为什么不在PCL中使用HttpClient?3年前你问过这个问题,但今天我遇到了这个问题。你找到解决方案了吗?如果我没记错的话,HttpClient上没有手势的方法。你是对的。与WebClient混淆:它有一个1和一个异步等价物。这将有助于消除httpclient的潜在问题。