2011-03-24 45 views
0

如果存在反序列化问题/其他错误,我总是收到400错误请求。如果我尝试通过在被调用的方法中设置断点来进行调试,那么如果存在反序列化问题,它不会受到影响。我如何拦截并调整回应以给我更多细节。WCF Rest 4.0联机模板中的错误处理

我看了一些关于webprotocolexception的文章,但我认为WCF Rest在线模板和入门套件还是不一样的。初学者工具包是否就像是模板的附加组件?

感谢您的时间。

回答

0

处理RESTful WCF服务中的异常很困难。反序列化问题是最糟糕的,因为没有用户代码被调用。该框架处理异常并简单地向调用者返回错误。有一种方法可以查看这些错误。您必须配置WCF跟踪(通过Web.config)。这里的描述过程,以及在哪里可以找到你的机器上跟踪查看链接:

Service Trace Viewer Tool (SvcTraceViewer.exe)

不幸的是有没有办法来调整该行为。但对于其他例外情况,您可以使用自定义IErrorHandler实现自定义HttpBehavior(或HttpBehavior2,如果您使用的是REST入门工具包)来处理例外情况。

0

错误400意味着错误的请求=>它在WCF级被拾取,甚至没有达到该方法。所以你需要看看请求,如果你传递JSON,很可能它的格式不正确。

我有一个我在WCF REST中实现的个人项目,不得不与这个很令人沮丧的错误作斗争。由于无法返回文本内容,因此服务器上的错误处理和向客户端返回错误代码也很残酷,我所拥有的仅仅是HTTP错误代码和错误描述(HTTP响应中的第一行)。 I 将永远不会再使用WCF REST,因为它是一个可执行的实现。

+0

谢谢,我不清楚这意味着什么 - '它在WCF级别被采集,甚至没有达到该方法。'我认为在发送到服务之前清理请求可能不是一种选择,因为服务的使用者需要这样做,这可能发生也可能不发生。我在这里提到的任何请求截取行的东西 - http://msdn.microsoft.com/en-us/library/ee391967.aspx。即使我不确定是否继续使用wcf休息在线模板是一个好主意,思考asp.net mvc休息服务。 – StudentForever 2011-03-24 15:08:48

+0

这意味着请求被认为是格式不正确的,并且不会在服务中触发您的方法。如果你向我显示你的请求和服务接口声明,我应该能够告诉你什么是错的。 – Aliostad 2011-03-24 15:48:49