WCF的异常处理

WCF的异常处理

介绍

WCF(Windows Communication Foundation) -异常处理:一般Exception的处理,FaultException和FaultException<T>的抛出和处理,使用IErrorHandler处理异常。

下面介绍第三种异常:FaultException<T>的抛出和处理

一、强类型化一个SOP错误类,传递需要用[DataContract] /// <summary> /// 错误信息实体类(用于错误契约FaultContract) /// </summary> [DataContract] public class FaultMessage { /// <summary> /// 错误信息 /// </summary> [DataMember] public string Message { get; set; } /// <summary> /// 错误代码 /// </summary> [DataMember] public int ErrorCode { get; set; } } 二、在操作协定中用[FaultContract]错误协定指定错误类型 [ServiceContract] public interface IHello { [OperationContract] [FaultContract(typeof(FaultMessage))] void HelloFaultExceptionGeneric(); } 三、在实现代码中,定义一个方法,可以抛出一个FaultException<FaultMessage>的异常 /// <summary> /// Hello类 /// </summary> public class Hello : IHello { /// <summary> /// 抛出FaultException<T>异常 /// </summary> public void HelloFaultExceptionGeneric() { throw new FaultException<FaultMessage>(new FaultMessage { Message = "抛出FaultException<T>异常", ErrorCode = -1 }, "为了测试FaultException<T>用的"); } } 四、在客户端中,可以捕获FaultException<FaultMessage>的异常。FaultMessage用Detail属性访问。 protected void btnHelloFaultExceptionGeneric_Click(object sender, EventArgs e) { ExceptionService.HelloClient proxy = new ExceptionService.HelloClient(); try { proxy.HelloFaultExceptionGeneric(); } catch (System.ServiceModel.FaultException<ExceptionService.FaultMessage> ex) { lblMsg.Text = string.Format("错误代码:{0};错误信息:{1};错误原因:{2}", ex.Detail.ErrorCode.ToString(), ex.Detail.Message, ex.Reason.ToString()); } finally { proxy.Close(); } }

到此这篇关于WCF异常处理的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易知道(ezd.cc)。

推荐阅读