【发布时间】:2011-01-31 19:04:29
【问题描述】:
我有一个 .Net WCF 客户端使用的 REST 服务。
遇到错误时,REST 服务会返回一个 HTTP 400 错误请求,其响应正文包含 JSON 序列化详细信息。
如果我使用 Fiddler、Javascript 或直接从 C# 执行请求,我可以在发生错误时轻松访问响应正文。
但是,我正在使用具有 6 个非常复杂的接口的 WCF ChannelFactory。这个代理抛出的异常总是ProtocolException,没有有用的细节。
当我收到此错误时,有什么方法可以获取响应正文?
更新
我意识到使用 .Net 有很多不同的方法可以做到这一点,并且还有其他方法可以获得错误响应。知道它们很有用,但不回答这个问题。
我们正在使用的 REST 服务会发生变化,并且当它们发生变化时,复杂的接口会得到更新。将ChannelFactory 与新接口一起使用意味着我们将获得编译时(而不是运行时)异常,并使这些异常更易于维护和更新代码。
在使用 WCF 通道时,有什么方法可以获取错误 HTTP 状态的响应正文?
【问题讨论】:
-
阅读您的解释,听起来您无法控制 REST 服务本身,对吗?
-
其实在这种情况下我们是这样做的,但是很难改变。我们的问题是复杂性——WCF ChannelFactory 提供了一种非常好的方法来使用接口来管理它。烦人的是,当 HTTP 标头状态不是 200 时,它会丢弃响应正文。当我们从 REST 服务收到错误时,它会返回 HTTP 400 或 500 状态,正文中包含详细信息。
标签: .net wcf rest channelfactory protocolexception