C# Web参考调用超时

4
我正在使用 Web 引用调用外部服务。由于 IP 地址是动态的,所以我需要逐个调用它们,并且一切运作正常。但是,有时候某些 IP 地址不可用,我会遇到超时问题,我已经进行了处理。但问题在于,每次调用的超时时间大约为 30 秒。我尝试将 WS 上的超时属性更改为 5 秒,但似乎没有任何效果。请问有人能帮助我吗?

1
你能否发布一些代码,展示你如何调用服务以及如何设置超时时间? - taylonr
//全局属性 private WebService.Service1 _ws = new WebService.Service1();//在构造函数中 _ws.Timeout = 5000;//方法调用 return _ws.create_session(string.Concat(_Domain, @"", _UserName), _Password, out lErrorCode); - Jim
除非有更多关于这个问题的信息,否则我建议进行彻底的调试。逐步执行代码,并确保是调用 Web 服务而不是其他操作导致了延迟。如果是调用 Web 服务导致的延迟,在逐步执行代码时,请检查调用时 Timeout 属性的值。您可能之前已将 Timeout 设置为 5000,但可能有其他设置将其更改。 - Dr. Wily's Apprentice
我感谢您的回复,但我已经这样做了。我走过代码并验证了ws调用之前的超时时间为5000。 - Jim
4个回答

1

这就是我一直在寻找的答案: 在C#中调整HttpWebRequest连接超时

****重要片段:****

从MSDN文档中可以看到HttpWebRequest.Timeout属性:

域名系统(DNS)查询可能需要长达15秒才能返回或超时。如果您的请求包含需要解析的主机名,并且将Timeout设置为小于15秒的值,则在请求超时之前可能需要15秒或更长时间,然后才会抛出WebException以指示请求超时。


1

0

0
你说你把“ws的超时属性改成了5秒钟”。如果你在服务器上更改超时,那么当客户端无法连接时这并不能帮助到你。
你正在使用“Web 引用”,所以我假设你有一个从System.Web.Services.Protocols.SoapHttpClientProtocol派生的客户端类。该类派生自System.Web.Services.Protocols.WebClientProtocol,它有一个Timeout属性。在调用之前尝试更改客户端上的该属性,看看是否可以获得更好的结果。

这是我正在更改的内容(在客户端)。ws是一个外部ws,我无法访问。 - Jim
是的,我正在设置WebClientProtocol.Timeout = 5。 - Jim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接