介绍

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();
}
}

最新文章

  1. MonjaDB —— 基于 Eclipse 的 MongoDB GUI 客户端工具(转载)
  2. [emacs org-mode小技巧] org-indent-mode 让文档更容易阅读
  3. .net常用组件
  4. 关于SVN 目录结构,使用教程
  5. Matlab命令——目录操作(windows&amp;Linux)
  6. Path of Equal Weight (DFS)
  7. Fedora24 升级到25
  8. iOS Socket第三方开源类库 ----AsyncSocket
  9. 关于压缩jar包时提示*.*没有这个文件或目录的问题以及解决办法:
  10. GridView 翻页 索引超出范围
  11. CAS与OAuth2的区别
  12. Python-Django-常用字段和参数
  13. vue引入JQ的方法
  14. LINUX 系统下部署 NFS服务
  15. js实现上传图片回显功能
  16. nginx-负载均衡相关配置 第五章
  17. 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境
  18. FileNotFoundException报错, src\main\....\....(拒绝访问) , 原因:1. 方法没有判断文件夹和文件, 2.没有指明文件的具体路径和名字
  19. Java 访问RabbitMQ
  20. react入门-refs

热门文章

  1. rewrite定义浏览器请求
  2. linux 环境下jmeter+ant+jenkins
  3. Clustering and Exploring Search Results using Timeline Constructions (paper2)
  4. uwp,GridView、ListView取消选中效果
  5. SQL常用语句简单
  6. SQL,NoSQL和NewSQL
  7. SAS学习笔记36 二分类logistic回归
  8. root用户和sudo使用root权限的区别(转)
  9. linux 添加硬盘找不到使用/sys/class/scsi_host/host/scan
  10. docker系列四之docker镜像与容器的常用命令