WCF - 如何制作自定义错误?

时间:2011-10-17 14:57:24

标签: c# .net wcf

我有一个WCF REST项目,我希望捕获WCF框架抛出的错误并以我的方式显示它们(JSON,即)。

例如,如果我在调用中期待一个int参数并且我得到一个字符串,那么框架会显示一个带有“请求错误”的页面和一些跟踪信息......我只想获得异常并以我的JSON格式显示它作为对用户的响应。

只是为了让它更清楚 - 我不是要在代码中捕获异常,而是在代码之外发生的异常。 WCF会自行生成的例外情况,例如(当我将字符串传递给int字段时)

  

服务器在处理请求时遇到错误。请参阅服务帮助页面以构建对服务的有效请求。异常消息是“输入字符串格式不正确”。请参阅服务器日志以获取更多详异常堆栈跟踪是:...

任何想法如何做到这一点?

非常感谢提前!

2 个答案:

答案 0 :(得分:1)

您需要使用FaultContracts来生成自己的自定义错误。花一点时间来设置但是一旦你拥有它,它就会产生奇迹。关于它的好处是FaultContract是完全可序列化的。

[OperationContract]
[FaultContract(typeof(CustomFault))]
string WillThrowArgumentException();

这是让它发挥作用的一个非常好的解释 http://blog.ngommans.ca/index.php?/archives/33-Handling-custom-errors-in-WCF.html

答案 1 :(得分:0)

听起来您正在寻求在WCF服务中实现全局错误处理,因此您可以捕获未处理的异常(代码中的意外错误或控件之外的错误)。如果我的理解是正确的,您需要查看IErrorHandler Interface

有很多关于如何强制IErrorHandler的博客文章和文章。这是一个涵盖SOAP和REST的文章:WCF Exception Handling with IErrorHandler