English 中文(简体)
当WebClientProtocol超时时会发生什么?
原标题:
  • 时间:2008-12-12 06:34:13
  •  标签:

我们有一个客户端应用程序,引用了一个web服务。我们在webclientprotocol对象上设置了超时属性为50 (毫秒),并希望观察发生了什么。我们绑定了一个长时间运行的webmethod,向客户端返回一个巨大的DataSet。当默认值存在时,DataSet正确地返回到客户端。当我们将其更改为50(ms)时,我们没有观察到任何东西。我们的假设是,由于发生了超时,客户端会有某种异常发生。请问有人能解释一下这里发生了什么吗?

Thanks Raj

问题回答

文件记录不清楚。当您说“什么也没有观察到”时,您具体指什么?代码是否永远挂起?是否抛出异常?大概是没有返回有效的 DataSet。

我本来会期望会抛出一个TimeoutException,但是我很惊讶在你的客户端代码中并不明显。你没有忽略异常吧?

你是同步还是异步执行调用?如果是异步的话,我希望回调函数在执行后,异常会被抛出在 "EndXxx" 调用上。

我强烈建议您编写一个简短的控制台应用程序,调用Web服务,以查看会发生什么。

我刚遇到这个问题。在.NET 2.0 Web服务中,它抛出了一个相当不特定的WebException,只有Message属性可以区分它:

请求已中止:连接意外关闭。

我尚未在新版本的Visual Studio中默认生成的基于WCF的服务引用中尝试过,但如果我正确理解这篇文章,它们会抛出一个更有用的TimeoutException,就像Jon Skeet所推测的(也是我的首选),这应该是 Web 服务中的行为。

请注意,超时仅适用于同步调用(至少在Web服务中;我认为WCF服务引用也是如此)。如果您希望异步调用超时,您将不得不设置计时器并手动终止调用,例如在此处演示的那样。





相关问题
热门标签