如何在C#中执行快速Web请求我有一个基于HTTP的API,我可能需要多次调用它。问题是我无法在不到20秒的时间内收到请求,尽管通过浏览器发出的相同请求几乎是即时的。以下代码说明了到目前为止我是如何实现的。WebRequestr=HttpWebRequest.Create("https://example.com/http/command?param=blabla");varresponse=r.GetResponse();一种解决方案是发出异步请求,但我想知道如果我可以避免它为什么需要这么长时间。我也尝试使用WebClient类,但我怀疑它在内部使用WebRequest。更新:在发布模式下运行以下代码大约需要40秒(用秒表测量):WebRequestg=HttpWebRequest.Create("http://www.google.com");varresponse=g.GetResponse();大学工作,网络配置可能有不同的因素影响性能,但直接使用浏览器建议它应该接近即时。更新2:我将代码上传到远程计算机并且运行良好,所以结论必须是.NET代码与浏览器相比做了一些额外的事情,或者它无法通过大学网络解析地址(代理问题或其他问题)?!)。这个问题类似于StackOverflow上的另一篇文章:Stackoverflow-2519655(HttpWebrequest很慢)主要是代理服务器属性的问题。您应该将此属性设置为null,否则该对象将在直接转到源之前尝试搜索要使用的适当代理服务器。注意:此属性默认启用,因此您必须明确告诉对象不要执行此代理搜索。请求.Proxy=null;使用(varresponse=(HttpWebResponse)request.GetResponse()){}我在“第一次”尝试时延迟了30秒——JamesR在另一篇提到将代理设置为空的帖子中立即解决了!HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(_site.url);请求.Proxy=null;//您的网站是否有无效的SSL证书?尝试添加此功能ServicePointManager.ServerCertificateValidationCallback=newSystem.Net.Security.RemoteCertificateValidationCallback(AlwaysAccept);//...某处AlwaysAccept定义为:使用System.Security.Cryptography.X509Certificates;使用System.Net.Security;Always(objectsender,X509Certificatecertification,X509Chainchain,SslPolicyErrorssslPolicyErrors){returntrue;你没有关闭你的请求。一旦达到允许的连接数,它必须等待先前的连接超时。试试上面的C#学习教程:HowtoperformfastwebrequestsharinginC#。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注---using(varresponse=g.GetResponse()){//dostuffwithyourresponse}这篇文章是收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
