WCF-异常处理
WCF 服务开发人员可能会遇到一些不可预见的错误,需要以适当的方式向客户端报告。此类错误(称为异常)通常通过使用 try/catch 块来处理,但同样,这是非常特定于技术的。
由于客户端关心的不是错误如何发生或导致错误的因素,因此 SOAP 错误契约用于将错误消息从服务传送到 WCF 中的客户端。
故障契约使客户能够获得服务中发生的错误的记录视图。下面的例子可以让大家更好的理解。
步骤 1 - 使用除法操作创建一个简单的计算器服务,这将产生一般异常。
using System; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Runtime.Serialization; usingSystem.ServiceModel; usingSystem.Text; namespace Calculator { // NOTE: You can use the "Rename" command on the "Refactor" menu to change // the interface name "IService1" in both code and config file together. [ServiceContract] public interface IService1 { [OperationContract] int divide(int num1, int num2); // TODO: Add your service operations here } }
类文件的编码如下所示 -
现在,当我们尝试将数字 10 除以零时,计算器服务将抛出异常。
异常可以通过try/catch块来处理。
现在,当我们尝试将任何整数除以 0 时,它将返回值 10,因为我们已经在 catch 块中处理了它。
步骤2 - 此步骤中使用FaultException 将异常信息从服务传递给客户端。
public int Divide(int num1, int num2) { //Do something throw new FaultException("Error while dividing number"); }
步骤 3 - 还可以创建自定义类型来使用FaultContract发送错误消息。下面提到了创建自定义类型的必要步骤 -
类型是通过使用数据契约来定义的,并且指定了要返回的字段。
服务操作由FaultContract 属性修饰。还指定了类型名称。
创建服务实例以引发异常并分配自定义异常属性。