1

我们有一个引用 Web 服务的客户端应用程序。我们已将 webclientprotocol 对象的 timeout 属性设置为 50 (ms),并想观察发生了什么。我们绑定了一个长期运行的 Web 方法,它向客户端返回一个巨大的 DataSet。当存在默认值时,DataSet 已正确返回给客户端。当我们将其更改为 50(ms) 时,我们没有观察到任何东西。我们的假设是,由于发生超时,客户端会发生某种异常。谁能解释一下这里发生了什么

谢谢拉吉

4

2 回答 2

4

不幸的是,文档不清楚。当你说你“没有观察到任何东西”时,你到底是什么意思?代码是否永远挂起?是否抛出异常?大概没有返回有效的数据集。

我希望引发TimeoutException,但我很惊讶这在您的客户端代码中并不完全明显。你没有吞下异常,是吗?

您是同步还是异步执行调用?如果它是异步的,我希望回调被执行,然后在“EndXxx”调用中抛出异常。

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

于 2008-12-12T07:13:00.030 回答
0

我刚碰到这个。在 .NET 2.0 Web 服务中,它会抛出一个非常不确定WebException的 ,只有Message属性来区分它:

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

我没有在较新版本的 Visual Studio 中默认生成的基于 WCF 的服务引用中尝试过它,但如果我理解正确,它们会抛出更有用TimeoutException的,就像Jon Skeet一样,我会猜到(并且更喜欢) 成为 Web 服务中的行为。

请注意,超时仅适用于同步调用(至少在 Web 服务中;我认为 WCF 服务引用也是如此)。如果您希望异步调用超时,则必须设置一个计时器并手动中止调用,例如此处所示。

于 2011-03-22T02:26:36.230 回答