C#学习教程:操作之间存在超时和(504)网关超时的区别检查一些URI。我收到多种类型的超时异常。它们的详细信息如下:System.Net.WebException:TheoperationhastimedoutatSystem.Net.HttpWebRequest.GetResponse()...andSystem.Net.WebException:Theremoteserverreturnedanerror:(504)GatewayTimeout.在System.Net.HttpWebRequest.GetResponse()at....这两者之间有什么区别。我的函数如下:publicboolCheckUri(Urim_url){try{HttpWebRequestrequest=HttpWebRequest.Create(m_url)asHttpWebRequest;request.UserAgent="MyUserAgent";//对于:基础连接已关闭:接收时发生意外错误。请求.KeepAlive=false;request.ProtocolVersion=HttpVersion.Version10;request.Method="HEAD";//仅获取头部信息using(HttpWebResponseresponse=request.GetResponse()asHttpWebResponse){intstatusCode=(int)response.StatusCode;if(statusCode>=100&&statusCode<400)//好的请求{stringsContent=null;使用(varstream=response.GetResponseStream())使用(StreamReaderloResponseStream=newStreamReader(stream))sContent=loResponseStream.ReadToEnd();返回真;}else{返回错误;//hardtoreachhere}}}//令人烦恼的异常catch(WebExceptionex){if(ex.Status==WebExceptionStatus.ProtocolError)//400errors{varresponse=ex.Response作为HttpWebResponse;if(response!=null){Console.WriteLine("HTTP状态代码:"+(int)response.StatusCode);Console.WriteLine(response.StatusCode);}}else{Console.WriteLine(ex.Message);}返回假;}catch(Exceptionex){Console.WriteLine(ex.Message);返回假;另外,如果有人能告诉我,如果多个线程使用不同的URI调用此方法,就会出现问题我没有得到任何跨线程异常。此方法实际上是Windows服务的一部分,该服务监视将近200个URI的列表。用蹩脚的话......“操作超时”意味着发送请求的程序已经超时等待响应。这可能意味着:互联网连接不良(如果他们都抛出此错误,那么很有可能)。主机连接错误(您连接的每个人都有问题)。错误的DNS(如果主机是域名,这可能是罪魁祸首)。错误的主机代理(主机端的某些内容未正确响应)。在这些情况下,我会手动测试与受影响主机的连接并以这种方式解决问题。首先尝试测试您自己的连接,以及其他主机。如果问题出在特定的主机上,那么他们可能无法与您联系。当您收到“504-GatewayTimeout”时,这意味着您的程序已成功连接到主机,但主机端出现问题,无法返回所需的响应。不是连接问题,是请求或主机本身的问题。可能是主机在尝试处理您的请求时陷入无限循环,或者它只是“挂起”并且处理您的请求的代理放弃并发回您的请求。在这些情况下,我会查看主机,可能会运行主机将接受的测试请求。如果主机不在您的控制之下,请联系任何人并报告错误。所以-简而言之。第一次超时可能与连接有关,而504超时可能与主机处理有关。希望这可以帮助。操作超时是客户端错误。它通常是由WebRequest(及其后代)的各种*Timeout属性引起的:Timeout、ContinueTimeout、ReadWriteTimeout。如果你发送请求的服务器在你设置的超时时间内没有响应,你会得到一个TimeoutException。为避免此错误,您可以增加超时时间。但是,默认情况下它们非常大,因此增加它不太可能有帮助。你可以多试几次。如果没有帮助,服务器可能已关闭。504GatewayTimeout是服务器错误。它通常是由您发送请求的服务器的基础结构中的错误或过载引起的。这是黑匣子。您对此错误无能为力,只有服务器管理员才能修复它。如果错误是由于过载引起的,可以尝试多次请求,但显然这样做往往弊大于利。通常,如果您没有获得HTTP代码,则它是.NET的一个例外。如果确实得到HTTP代码,可以查看第一个数字:2**OK3**Redirect4**ClientError5**ServerError可以参考这个链接“操作超时”,问题可能be是因为服务器已经在忙于执行任务。而(504)GatewayTimeout意味着一台服务器在尝试加载网页或填写来自浏览器的另一个请求时没有收到来自它访问的另一台服务器的及时响应。当定义了一个指定的时间并且服务器未能在该特定时间内响应(发生在远程服务器内部)时,操作超时并且HTTP循环中出现504错误(发生在客户端和服务器之间的通信)任何客户端(对于例如,您的网络浏览器或我们的CheckUpDown机器人)在与网络服务器通信时都会经历以下循环:从站点的IP名称(没有前导“http://”的站点URL)获取IP地址。此查找(将IP名称转换为IP地址)由域名服务器(DNS)提供。打开到此IP地址的IP套接字连接。通过此套接字写入HTTP数据流。作为响应,从Web服务器接收到HTTP数据流。此数据流包含状态代码,其值由HTTP协议确定。解析此数据流以获取状态代码和其他有用信息。当客户端收到识别为“504”的HTTP状态代码时,此错误发生在上面的最后一步中。(最后更新时间:2012年3月)。修复504错误-一般此问题纯粹是由于后端计算机(可能包括Web服务器)之间的IP通信速度慢所致。只有在托管Web服务器的站点上设置了网络的人才能解决此问题。以上是C#学习教程:操作的区别是超时和(504)网关超时。分享的所有内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
