WCF – 异常处理

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
   }
}

类文件的编码如下所示 –

Wcf 异常处理 2

现在,当我们尝试将数字 10 除以零时,计算器服务将抛出异常。

Wcf 异常处理 3

Wcf 异常处理 4

异常可以由 try/catch 块处理。

Wcf 异常处理 5

现在,当我们尝试将任何整数除以 0 时,它将返回值 10,因为我们已经在 catch 块中处理了它。

Wcf 异常处理 6

第 2 步– 此步骤中使用 FaultException 将异常信息从服务传达给客户端。

public int Divide(int num1, int num2) { 
   //Do something 
   throw new FaultException("Error while dividing number"); 
}

Wcf 异常处理 7

步骤 3 – 也可以创建自定义类型以使用 FaultContract 发送错误消息。下面提到了创建自定义类型必不可少的步骤 –

使用数据契约定义类型,并指定要返回的字段。

服务操作由 FaultContract 属性修饰。还指定了类型名称。

创建服务实例以引发异常并分配自定义异常属性。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁