1

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

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

在 WCF 应用程序中,我有自己的异常类,它工作正常。但是假设客户想要从数据库中获取某物。我的问题是:我应该在我的应用程序之外向客户返回什么?A. 复杂类型:具有元数据的值(有关可能错误的信息[1])。当真正发生意外错误时抛出异常。B. 只是一个值(当可能发生错误时——抛出异常)

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

4

2 回答 2

2

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

于 2011-08-02T08:25:20.427 回答
1

按照设计,WCF 对客户端隐藏异常。由开发人员决定在发生异常时将哪些信息(如果有)返回给客户端。

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

这里有一些文章可以看:

故障合约 WCF 教程 故障合约

您可能还想查看 WCF 的 IErrorHandler:

IErrorHandler 接口

于 2011-08-02T08:27:21.377 回答