本篇内容主要讲解“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的异常处理是什么”有了更深的了解,不妨来实际操作一番吧!这里是天达云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!