从WCF服务返回结果/错误.复杂类型或异常

本文关键字:复杂 类型 异常 错误 WCF 服务 返回 结果 | 更新日期: 2023-09-27 18:04:19

几天前我问过一个非常类似的问题。我是关于在应用程序内返回值/错误。我接受一个答案,不返回错误和对象,但抛出一个自定义异常。现在,我不太确定如何使用WCF服务来处理它。我希望能为客户提供尽可能简单的服务。

总的来说,我的项目是这样的:客户端-> WCF服务应用程序->数据库

在WCF应用程序中,我有我自己的异常类,它工作得很好。但是假设客户想从数据库得到什么。我的问题是:我应该返回什么给我的应用程序之外的客户端?A.复杂类型:包含元数据的值(关于可能错误的信息[1])。当真正意想不到的错误发生时抛出异常。B.只是一个值(当可能发生错误时-抛出异常)

[1] -无效的字符串格式,无法连接到数据库或类似的东西。我的意思是-如果我知道错误到底是什么-为什么向客户端抛出异常-我不确定。

从WCF服务返回结果/错误.复杂类型或异常

如何解决这个问题取决于客户端。如果你必须支持Silverlight客户端,抛出异常是不可能的,因为使用浏览器HTTP栈的Silverlight客户端无法处理它们。对于Silverlight客户端,我通常推荐(并且自己使用)这里描述的方法。

按照设计,WCF对客户端隐藏异常。当发生异常时,由开发人员决定返回什么信息(如果有的话)给客户端。

我会考虑使用FaultContractFaultContract<T>,并通过该机制返回您希望的异常。

这里有一些文章可以看:

错合同WCF教程故障合同

你可能还想看看IErrorHandler的WCF:

IErrorHandler界面