2010-04-08 88 views
3

我有一个网页(.aspx),调用第三方Web服务来获取一些数据。通常需要几秒钟才能获得响应,然后页面的其余部分将加载。有时由于网络服务停止或互联网连接等原因,通话卡住,页面只是挂在那里,不会加载。如何取消Web服务呼叫,如果它没有响应

我的问题是:

1)有没有办法中止/取消设定的时间量后,Web服务调用?

2)在调用Web服务之前,甚至可以验证Web服务的状态吗?

谢谢。

回答

4

这个问题会指出你在正确的方向。它讨论了如何为Web服务设置默认超时,因此如果时间过长,它会自动取消。

timeout for asynchronous web service call in C#

来验证服务状态的唯一途径是通过调用它。你可以通过你得到的回应来判断它是否下降。 (500 404等)。

以下是两者之间的区别以及Microsoft推荐的内容。

http://msdn.microsoft.com/en-us/library/ms998562.aspx#scalenetchapt10_topic14

+0

感谢您的快速回复。 您能解释一下在配置文件中设置executionTimeout和设置代理的超时属性之间有什么区别吗?这两个是一样的吗,一个价值是否会超过另一个? 谢谢! – drizzle 2010-04-08 20:18:58

0

有多种方式来处理这类问题。从非基于Web的应用程序迁移到Web应用程序最大的困扰之一就是UI的响应速度。如果你希望你的界面对用户更加敏感,你可能想要考虑使用AJAX来获得异步结果。当页面加载时,需要第三方Web服务的部分可以显示某种加载指示(其他所有内容立即显示),然后通过RPC,内容在加载完成时显示(或者如果经过了一定的时间,显示超时错误)。