我有一个简单的WCF服务,执行一个简单的操作:
[OperationContract]
DoSomething (Stuff input);
Run Code Online (Sandbox Code Playgroud)
如果内部发生异常,DoSomething则FaultException返回a.鉴于所有客户需要知道的是出了什么问题,你会说FaultException在这种情况下没有必要定义一个吗?
返回 a 始终是一个好习惯FaultException,因为如果不这样做,通道将出现故障并且无法再次使用。
在配置中(在服务行为中)决定需要向客户端发送哪些信息:
<serviceBehaviors>
<behavior name="myName">
<serviceDebug includeExceptionDetailInFaults="true" />
// ....
Run Code Online (Sandbox Code Playgroud)
事实上,我总是IErrorHandler在服务上实现行为来捕获所有异常并返回FaultException<T>,这样我就不必在所有操作中都这样做。