WCF错误处理
2024-09-05 04:57:03
介绍
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();
}
}
最新文章
- MonjaDB —— 基于 Eclipse 的 MongoDB GUI 客户端工具(转载)
- [emacs org-mode小技巧] org-indent-mode 让文档更容易阅读
- .net常用组件
- 关于SVN 目录结构,使用教程
- Matlab命令——目录操作(windows&;Linux)
- Path of Equal Weight (DFS)
- Fedora24 升级到25
- iOS Socket第三方开源类库 ----AsyncSocket
- 关于压缩jar包时提示*.*没有这个文件或目录的问题以及解决办法:
- GridView 翻页 索引超出范围
- CAS与OAuth2的区别
- Python-Django-常用字段和参数
- vue引入JQ的方法
- LINUX 系统下部署 NFS服务
- js实现上传图片回显功能
- nginx-负载均衡相关配置 第五章
- 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境
- FileNotFoundException报错, src\main\....\....(拒绝访问) , 原因:1. 方法没有判断文件夹和文件, 2.没有指明文件的具体路径和名字
- Java 访问RabbitMQ
- react入门-refs
热门文章
- rewrite定义浏览器请求
- linux 环境下jmeter+ant+jenkins
- Clustering and Exploring Search Results using Timeline Constructions (paper2)
- uwp,GridView、ListView取消选中效果
- SQL常用语句简单
- SQL,NoSQL和NewSQL
- SAS学习笔记36 二分类logistic回归
- root用户和sudo使用root权限的区别(转)
- linux 添加硬盘找不到使用/sys/class/scsi_host/host/scan
- docker系列四之docker镜像与容器的常用命令