C#Web引用调用超时
我正在使用Web引用调用外部服务。 IP是动态的,所以我逐个称呼它们,一切正常。 定期某些IP将无法使用,我正在处理我正在处理的超时。 问题是每次呼叫超时所需的时间大约为30秒。 我尝试将ws上的超时属性更改为5秒,但似乎没有什么区别。 有人可以帮我这个吗?
您可以使用更短的超时(例如1000毫秒)自行执行DNS查找:
然后(如果找到IP地址)使用IP地址执行Web服务调用(以避免在无法控制超时的DNS查找中)使用例如4000毫秒的TimeOut(甚至更好:5000毫秒 – (时间为DNS查找())实现5000毫秒的总超时。
这是我正在寻找的答案: 在C#中调整HttpWebRequest连接超时
****重要片段:****
从HttpWebRequest.Timeout
属性的MSDN文档:
域名系统(DNS)查询最多可能需要15秒才能返回或超时。 如果您的请求包含需要解析的主机名,并且您将Timeout设置为小于15秒的值,则在抛出WebException之前可能需要15秒或更长时间才能指示请求超时。
你说你把“ws的超时属性改为5秒”。 如果您正在更改服务器上的超时,那么当您的客户端无法连接时,这将无法帮助您。
您正在使用“Web引用”,因此我假设您有一个派生自System.Web.Services.Protocols.SoapHttpClientProtocol
的客户端类。 该类派生自System.Web.Services.Protocols.WebClientProtocol
,它具有Timeout属性。 在拨打电话之前尝试更改客户端上的该属性,看看是否可以获得更好的结果。
如果在创建代理对象之前ping IP地址并在此处调用Web服务,则可能会有所帮助,这是有关Ping类http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping的详细信息。 ASPX