C# 发生WebClientProtocol超时时会发生什么
我们有一个客户端应用程序,它引用了一个Web服务。我们已经将webclientprotocol对象的timeout属性设置为50毫秒,并希望观察发生了什么。我们绑定了一个长时间运行的webmethod,它向客户端返回一个巨大的数据集。当存在默认值时,数据集被正确地返回给客户端。当我们把它改为50ms时,我们没有观察到任何东西。我们的假设是,在超时发生后,客户端会发生某种异常。谁能解释一下这里发生了什么事 谢谢C# 发生WebClientProtocol超时时会发生什么,c#,.net,web-services,timeout,C#,.net,Web Services,Timeout,我们有一个客户端应用程序,它引用了一个Web服务。我们已经将webclientprotocol对象的timeout属性设置为50毫秒,并希望观察发生了什么。我们绑定了一个长时间运行的webmethod,它向客户端返回一个巨大的数据集。当存在默认值时,数据集被正确地返回给客户端。当我们把它改为50ms时,我们没有观察到任何东西。我们的假设是,在超时发生后,客户端会发生某种异常。谁能解释一下这里发生了什么事 谢谢 Raj不幸的是,文件不清楚。当你说你没有观察到任何东西时,你到底是什么意思?代码是否永
Raj不幸的是,文件不清楚。当你说你没有观察到任何东西时,你到底是什么意思?代码是否永远挂起?是否引发了异常?可能未返回有效的数据集 我希望抛出一个,但我很惊讶这在您的客户机代码中并不完全明显。你不是在吞咽例外,是吗 您是同步还是异步执行调用?如果是异步的,我希望执行回调,然后在EndXxx调用中抛出异常
我强烈建议您编写一个简短的控制台应用程序,只调用web服务,看看会发生什么。不幸的是,文档不清楚。当你说你没有观察到任何东西时,你到底是什么意思?代码是否永远挂起?是否引发了异常?可能未返回有效的数据集 我希望抛出一个,但我很惊讶这在您的客户机代码中并不完全明显。你不是在吞咽例外,是吗 您是同步还是异步执行调用?如果是异步的,我希望执行回调,然后在EndXxx调用中抛出异常
我强烈建议您编写一个简短的控制台应用程序,只调用web服务,看看会发生什么。在.NET 2.0 Web服务中,它抛出一个非常不具体的WebException,只有Message属性来区分它: 请求被中止:连接意外关闭 我没有在较新版本的VisualStudio中默认生成的基于WCF的服务引用中尝试过它,但是如果我理解正确,它们会抛出一个更有用的TimeoutException,我可能已经猜到了,并且更愿意成为Web服务中的行为
请注意,超时仅适用于至少在Web服务中的同步调用;我认为WCF服务参考也是如此。如果希望异步调用超时,则必须设置计时器并手动中止调用,如所示。我刚刚遇到了这个问题。在.NET 2.0 Web服务中,它抛出一个非常不具体的WebException,只有Message属性来区分它: 请求被中止:连接意外关闭 我没有在较新版本的VisualStudio中默认生成的基于WCF的服务引用中尝试过它,但是如果我理解正确,它们会抛出一个更有用的TimeoutException,我可能已经猜到了,并且更愿意成为Web服务中的行为
请注意,超时仅适用于至少在Web服务中的同步调用;我认为WCF服务参考也是如此。如果希望异步调用超时,则必须设置计时器并手动中止调用,如所示。这实际上并不能回答问题。另外,您是否查看了InnerException属性?@John Saunders:问题是,当WebClientProtocol超时发生时会发生什么?答案是,它抛出一个WebException。这怎么不能回答这个问题呢?是的,我查看了InnerException属性,希望在那里找到TimeoutException异常。不幸的是,它是空的。这就是为什么只有消息文本将异常与其他可能的WebException区分开来的部分原因。当一个仅用于人类消费的属性必须用于编程决策时,这是令人沮丧的。这实际上并没有回答这个问题。另外,您是否查看了InnerException属性?@John Saunders:问题是,当WebClientProtocol超时发生时会发生什么?答案是,它抛出一个WebException。这怎么不能回答这个问题呢?是的,我查看了InnerException属性,希望在那里找到TimeoutException异常。不幸的是,它是空的。这就是为什么只有消息文本将异常与其他可能的WebException区分开来的部分原因。当一个仅用于人类消费的属性必须用于编程决策时,这是令人沮丧的。