我正在使用 Web 引用调用外部服务。由于 IP 地址是动态的,所以我需要逐个调用它们,并且一切运作正常。但是,有时候某些 IP 地址不可用,我会遇到超时问题,我已经进行了处理。但问题在于,每次调用的超时时间大约为 30 秒。我尝试将 WS 上的超时属性更改为 5 秒,但似乎没有任何效果。请问有人能帮助我吗?
这就是我一直在寻找的答案: 在C#中调整HttpWebRequest连接超时
****重要片段:****
从MSDN文档中可以看到HttpWebRequest.Timeout
属性:
域名系统(DNS)查询可能需要长达15秒才能返回或超时。如果您的请求包含需要解析的主机名,并且将Timeout设置为小于15秒的值,则在请求超时之前可能需要15秒或更长时间,然后才会抛出WebException以指示请求超时。
您可以自己执行 DNS 查找,并设置较短的超时时间(例如1000毫秒):
然后(如果找到了IP地址),使用IP地址执行Web服务调用(以避免DNS查找,其中您无法控制超时),使用例如4000毫秒的超时时间(或者更好:5000毫秒 - (DNS查找所需的时间))以实现总超时时间为5000毫秒。
在创建代理对象并调用Web服务之前,如果您ping IP地址可能会有帮助,这里是Ping类的详细信息http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping.aspx