【问题标题】:.NET 4.5 WCF Client Deal with bad Server?.NET 4.5 WCF 客户端处理坏服务器?
【发布时间】:2013-05-21 13:07:54
【问题描述】:

我有一个 .net 4.5 客户端,其中包含对远程 Windows WCF 服务的标准服务引用。

有时,当服务器出现严重错误时,它实际上会返回 HTML,而不是我的服务客户端期望的强类型响应。服务器将完全违反我们的软件所遵循的接口/合同。

服务器不会抛出 FaultException。我没有收到 CommunicationException 或其他任何“正常”的东西。对于频道中可能发生的一些异常情况,我有 catch{} 块,但我无法确定如何明确处理获取 HTML 字符串而不是有效位的问题。

谁能告诉我如何巧妙地明确捕获这种服务器活动?这种情况很少见,但发生的足够多,它破坏了我的 WCF 客户端行为

谢谢。

【问题讨论】:

  • 当您说“服务器会抛出 FaultException 或其他任何“正常”的东西时,它会发送一串标记。”您的意思是服务器没有发送 FaultException 对吗?否则我猜问这个问题是没有意义的。
  • 远程服务器不发送 FaultException。在我的代理客户端反序列化来自服务器的消息之前,我的客户端没有收到实际的“错误”,然后事情就变糟了,因为该消息是人类可读的 HTML 标记“发生了错误。请稍后再试”。
  • 如果响应与您的服务合同不匹配,您一定会遇到反序列化异常。那为什么就抓不住处理呢?
  • 我在记录的数据中没有看到反序列化异常。我会仔细检查。谢谢。

标签: wcf web-services faultexception


【解决方案1】:

如果您在 IIS 中托管您的 wcf 服务,并且在您的服务行为中有一个带有属性 IncludeExceptionDetailInFaults 的 serviceDebug 部分。如果您的服务抛出派生自 System.Exception 而不是 FaultException 的异常,您将遇到此问题。

您写道,您将 wcf 服务托管在 Windows 服务器中。所以我的回复可能无效,但您应该检查 IncludeExceptionDetailInFaults 设置。

【讨论】:

    猜你喜欢
    • 2011-08-15
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    相关资源
    最近更新 更多