我有一个可能会抛出异常的服务.我希望能够在客户端捕获异常.我感兴趣的主要例外是DbUpdateException和InvalidOperationException.对于其余的异常,足以知道异常已被抛出.
如何在客户端捕获异常?
Gra*_*ark 11
如果您的WCF服务抛出异常,则默认情况下它将作为a来到客户端FaultException.您可以将服务配置为在故障中包含异常详细信息,如下所示:
<serviceDebug includeExceptionDetailInFaults="true" />
Run Code Online (Sandbox Code Playgroud)
但是您可能不想这样做,将内部实现细节暴露给客户端永远不是一个好主意.
如果要区分不同的服务故障,可以创建自己的类,并将其注册为服务将引发的错误.您可以在服务合同级别执行此操作:
public interface YourServiceContract
{
[FaultContract(typeof(YourFaultClass))]
[OperationContract(...)]
YourServiceResponseClass YourServiceOperation(YourServiceRequestClass request);
}
Run Code Online (Sandbox Code Playgroud)
您用于故障合同的类不必实现任何操作(就像您必须为自定义一样Exception),它将被包装在一个通用FaultContract对象中.然后,您可以在客户端代码中捕获此信息,如下所示:
try
{
// service operation
}
catch (FaultException<YourFaultClass> customFault)
{
...
}
catch (FaultException generalFault)
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10454 次 |
| 最近记录: |