这个问题已经回答了很多次,但不幸的是对我来说没有答案可行。
我只是使用WebClient.DownloadString()并且它的执行非常慢。我已经尝试将WebClient.Proxy设置为null和GlobalProxySelection.GetEmptyWebProxy(),这不起作用,我不是最接近我的互联网速度。我做错了什么?
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var res = GetData("tp");
ShowData(res);
res = GetData("nl");
ShowData(res);
res = GetData("sp");
ShowData(res);
res = GetData("en");
ShowData(res);
res = GetData("in");
ShowData(res);
res = GetData("st");
ShowData(res);
res = GetData("sh");
ShowData(res);
res = GetData("fl");
ShowData(res);
res = GetData("ce");
ShowData(res);
}
public IEnumerable<object> GetData(string playListName)
{
try
{
String url = string.Empty;
string jsonStr = string.Empty;
if (playListName == "tp")
url = "https://content.jwplatform.com/feeds/wDg7QXiZ.json";
else if (playListName == "nl")
url = "https://content.jwplatform.com/feeds/ZluqvHh7.json";
else if (playListName == "sp")
url = "https://content.jwplatform.com/feeds/CqjyIXVZ.json";
else if (playListName == "en")
url = "https://content.jwplatform.com/feeds/FEvaC7IT.json";
else if (playListName == "in")
url = "https://content.jwplatform.com/feeds/7HSiwnEm.json";
else if (playListName == "st")
url = "https://content.jwplatform.com/feeds/ioE6BWAD.json";
else if (playListName == "sh")
url = "https://content.jwplatform.com/feeds/XHZFlpw1.json";
else if (playListName == "fl")
url = "https://content.jwplatform.com/feeds/N2gtCgnE.json";
else if (playListName == "ce")
url = "https://content.jwplatform.com/feeds/Lw3otpHB.json";
else
url = string.Empty;
using (var webClient = new WebClient())
{
webClient.Proxy = null; // not working
//webClient.Proxy = GlobalProxySelection.GetEmptyWebProxy(); // not working
jsonStr = webClient.DownloadString(url); // take 8 to 10 seconds
}
return jsonStr;
}
catch (Exception) { return null; }
}
}
调用browser-url中的url工作正常
答案 0 :(得分:1)
很难确切地知道什么是缓慢而不深入研究的主要原因(查看更广泛的代码环境,监控网络和/或分析应用程序)。
话虽如此,一般来说,我能想到的一些事情可能有所帮助:
如果有许多请求并行运行,那么您可能想知道.net允许您并行运行最多两个请求。您可以通过配置端点的连接限制来更改它。
如果可能,你还没有配置它,那么你可以设置httpclienthandler 除deflate或gzip内容类型之外的automaticDecompression属性。这将使服务器在支持它的情况下压缩消息,然后再将其发送回您的页面。
请记住,问题之夜在其他地方 - 比如网络问题或端点限制。