C#Web引用调用超时

我正在使用Web引用调用外部服务。 IP是动态的,所以我逐个称呼它们,一切正常。 定期某些IP将无法使用,我正在处理我正在处理的超时。 问题是每次呼叫超时所需的时间大约为30秒。 我尝试将ws上的超时属性更改为5秒,但似乎没有什么区别。 有人可以帮我这个吗?

您可以使用更短的超时(例如1000毫秒)自行执行DNS查找:

http://www.chapleau.info/cs/blogs/fchapleau/archive/2008/09/09/reverse-dns-lookup-with-timeout-in-c.aspx

然后(如果找到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