Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 发生WebClientProtocol超时时会发生什么_C#_.net_Web Services_Timeout - Fatal编程技术网

C# 发生WebClientProtocol超时时会发生什么

C# 发生WebClientProtocol超时时会发生什么,c#,.net,web-services,timeout,C#,.net,Web Services,Timeout,我们有一个客户端应用程序,它引用了一个Web服务。我们已经将webclientprotocol对象的timeout属性设置为50毫秒,并希望观察发生了什么。我们绑定了一个长时间运行的webmethod,它向客户端返回一个巨大的数据集。当存在默认值时,数据集被正确地返回给客户端。当我们把它改为50ms时,我们没有观察到任何东西。我们的假设是,在超时发生后,客户端会发生某种异常。谁能解释一下这里发生了什么事 谢谢 Raj不幸的是,文件不清楚。当你说你没有观察到任何东西时,你到底是什么意思?代码是否永

我们有一个客户端应用程序,它引用了一个Web服务。我们已经将webclientprotocol对象的timeout属性设置为50毫秒,并希望观察发生了什么。我们绑定了一个长时间运行的webmethod,它向客户端返回一个巨大的数据集。当存在默认值时,数据集被正确地返回给客户端。当我们把它改为50ms时,我们没有观察到任何东西。我们的假设是,在超时发生后,客户端会发生某种异常。谁能解释一下这里发生了什么事

谢谢
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区分开来的部分原因。当一个仅用于人类消费的属性必须用于编程决策时,这是令人沮丧的。