【问题标题】:What exception is thrown if a web service I'm using times out?如果我正在使用的 Web 服务超时,会引发什么异常?
【发布时间】:2010-03-18 15:17:21
【问题描述】:

我正在现有的 .NET 2.0 Web 服务中调用 .NET 2.0 Web 服务。如果发生超时,我想知道 Web 方法会引发什么异常。我已将 Web 服务超时设置为低于默认 90 秒的值,如果发生超时,我想添加业务逻辑。

[System.Net.WebException][1] 是我应该关注的异常吗?

【问题讨论】:

    标签: c# web-services exception system.net.webexception


    【解决方案1】:

    这取决于您使用的 Web 服务的“版本”。

    使用 WCF,您实际上会得到一个TimeoutException。如果您尝试处理超时,您通常还应该处理CommunicationException。有时我也见过FaultException,虽然从技术上讲不应该发生(但它偶尔会发生)。 FaultExceptionCommunicationException 的后代,所以你不需要单独处理它,知道它可能会发生是很有用的。

    在 ASMX 中,您通常会得到一个包装好的 SoapException,您需要检查 InnerException 属性以查看真正出错的地方。

    使用 WSE,您会看到另一个例外情况,ResponseProcessingException,您必须再次查看InnerException 了解详情。

    【讨论】:

    • 我正在使用 .NET 2.0 网络服务
    • @BT:.NET 2.0 不是一种网络服务,它是一个框架版本。假设您指的是 ASMX Web 服务,请参阅第三段。
    • 谢谢!我假设 InnerException 也是一种异常,所以我的问题仍然存在,我如何知道它是超时异常,我的意思是我应该查看哪种类型的内部异常?
    • @BT:从我们数据库中的一些(非常古老的)错误报告来看,InnerException 很可能是HttpExceptionHttpStatusCode.RequestTimeout (HTTP 408)。尽管可能还有其他类型的超时未报告。
    【解决方案2】:

    您应该寻找TimeoutException:

    分配给进程或操作的时间到期时引发的异常。

    【讨论】:

    • 在 Web 服务的情况下不起作用。捕捉WebException 就可以了。
    猜你喜欢
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多