转载:http://www.cnblogs.com/zeroone/articles/2299001.html

http://www.it165.net/pro/html/201403/11033.html

最近在园子里转看到有人对如题的实现有疑问,今天有时间就写了项目把实现简单的讲解一下,如果你是牛逼人物那就绕道吧,哥不想浪费你的时间,现在开始:

默认WCF是不允许将服务器的异常信息返回到客户端的(主要是客户端不一定能够识别clr的异常信息),如果你有这方面的需求可以通过SOAP的Fault包的形式返回异常信息,首先要做的就是设置配置文件,将默认不允许返回错误信息的设置改成如下:

    <behaviors>
<serviceBehaviors>
<behavior name="Bhc">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/><!--如此設置會將服務器端得錯誤返回到客戶端,實際的發佈中需要將此項目設置成false-->
</behavior>
</serviceBehaviors>
</behaviors>

然后定义承载信息的DataContract

    [DataContract]
public class Erro
{
[DataMember]
public string Message
{
get; set;
}
}

上边的代码 就不用介绍了 就是一个数据合同

    //服務契約定義了可以遠程調用的對象和方法
//定義服務契約
[XmlSerializerFormat]//定義序列化的方式
[ServiceContract(SessionMode = SessionMode.Allowed)]//SessionMode = SessionMode.Allowed:設置此屬性意味著可以使用會話Binding
public interface IActionMain
{
//定義操作契約
[DataContractFormat]//定義序列化的方式
[OperationContract]
string GetName(string pInc); [FaultContract(typeof(ErroInfo.Erro))]//如果有異常就返回下面定義的數據契約的結構數據
[FaultContract(typeof(DivideByZeroException))]
[OperationContract]
DataCollection Return();
}

在方法中定义属性,这里有两种实现

1.使用自定义的错误类型
        [FaultContract(typeof(ErroInfo.Erro))]//如果有異常就返回下面定義的數據契約的結構數據

2.使用系统的异常类型
        [FaultContract(typeof(DivideByZeroException))]
在契约实现类中将异常抛出

throw new FaultException<DivideByZeroException>(new DivideByZeroException("這個是自定義的異常!"));

到此服务器端的实现完成。

下边看客户端的实现

配置文件不需要特殊设置,调用函数,抓取异常,代码如下:

            try
{
return this.Channel.Return();
}
catch (FaultException<ErroInfo.Erro> exception)
{
throw new Exception(exception.Detail.Message);
}
catch(FaultException<DivideByZeroException> exception)
{
throw new Exception(exception.Detail.Message);
}

FaultException<ErroInfo.Erro> exception:这个抓取的是定义的异常类型。

FaultException<DivideByZeroException> exception:这个抓取的是系统异常类型

注意这里获取异常的信息的方法是exception.Detail.Message,而不是Message。

运行效果如下:

示例代码:Demo

WCF实现将服务器端的错误信息返回到客户端的更多相关文章

  1. 后端API接口的错误信息返回规范

    前言 最近我司要制定开发规范.在讨论接口返回的时候,后端的同事询问我们前端,错误信息的返回,前端有什么意见? 所以做了一些调研给到后端的同事做参考. 错误信息返回 在使用API时无可避免地会因为各种情 ...

  2. SpingMVC中利用BindingResult将错误信息返回到页面中

    SpingMVC中利用BindingResult将错误信息返回到页面中. ActionFrom中: private String name; private String password; get( ...

  3. Struts2第十篇【数据校验、代码方式、XML配置方式、错误信息返回样式】

    回顾以前的数据校验 使用一个FormBean对象来封装着web端来过来的数据 维护一个Map集合保存着错误信息-对各个字段进行逻辑判断 //表单提交过来的数据全都是String类型的,birthday ...

  4. Spring Boot 如何自定义返回错误码错误信息

    说明 在实际的开发过程中,很多时候要定义符合自己业务的错误码和错误信息,而不是统一的而不是统一的下面这种格式返回到调用端 INTERNAL_SERVER_ERROR(500, "Intern ...

  5. WCF分布式开发步步为赢(15):错误契约(FaultContract)与异常处理(ExceptionHandle)

    今天学习WCF分布式开发步步为赢系列的15节:错误契约(FaultContract)与异常处理(ExceptionHandle).本节内容作为WCF分布式开发的一个重要知识点,无论在学习还是项目中都应 ...

  6. 前端:参数传错了,spring-boot:那错误信息我给你显示的友好点儿

    之前两篇文章 Spring-boot自定义参数校验注解和如何在spring-boot中进行参数校验,我们介绍了,参数校验以及如何自定义参数校验注解,但是当传递参数出错时,只是把错误信息打印到了控制台, ...

  7. IIS7显示ASP的详细错误信息到浏览器

    服务端环境:Windows2008 + IIS7 客户端浏览器设置:取消“显示友好的HTTP错误信息” IIS7设置(GUI): 1. 网站->ASP->调试属性->将错误发送到浏览 ...

  8. 发生了Post错误:错误代码40005,微信返回错误信息:invalid file type

    给客户部署 PxxCms, 使用群发功能发送图文的的时候提示: 发生了Post错误:错误代码40005,微信返回错误信息:invalid file type, 没学过php伤不起 ... Google ...

  9. 使用spring webflow,在前台页面中如何显示后端返回的错误信息

    刚刚接触spring webflow,相关的资料并不是很多,并且大都是那种入门的 .xml文件的配置. 用到的CAS 最新的4.0版本用的就是web-flow流,前台页面使用的是表单提交.于是我就碰到 ...

随机推荐

  1. luogu P3393 逃离僵尸岛

    luoguP3393逃离_僵尸岛_ 一道洛谷不知道哪门子月赛的题 可以用此题来练习最短路算法 SPFA和dijkstra的练习题(关于Floyed,他死了 思路: 本题是最短路板子. 首先就是建立虚点 ...

  2. 首次加载进来DEV控件列表第一行颜色总是不对,后台代码显示的数据正确

    1:行改变的颜色正确的颜色: 1.1颜色效果如下图: 1.2:设置行改变颜色: 2:结果首次加载第一行颜色为: 3:解决方案: 3.1 :Views-->OptionsSelection --& ...

  3. hdu 5943(素数间隔+二分图匹配)

    Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  4. OutLook中添加Exchange失败问题

    问题: 在邮件中添加账户后,打开outlook时报出错误:无法启动 Microsoft Outlook. 无法打开 Outlook 窗口. 无法打开此文件夹集合. 必须先使用当前的配置文件连接到 Mi ...

  5. 易普优高级计划排程Light版助力中小企业实现精益化计划

    易普优高级计划排程Light版助力中小企业实现精益化计划 一.业务与排产需求 根据统计,目前中小企业已经占到我国工业企业总数的95%以上,对中国GDP贡献超过60%,税收超过了50%,提供了70%的进 ...

  6. 采用Post请求的方式提交参数并导出excel

    一般情况下,我们都是采用get请求的方式导出excel.例如采用如下方式: var exportUrl = '/xxx;'; window.open(exportUrl); 导出excel所需的逻辑参 ...

  7. win7 fiddler报“Creation of the root certificate was not successful”的问题

    cd "C:\Program Files (x86)\Fiddler2" makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_Fiddl ...

  8. 人工智能我见及特征提取mfcc算法理解

    一.人工智能 从LeNex手写数字识别,AlexNet图像识别,到无人驾驶汽车,再到Alpha Go.Alpha Go Zero的横空出世,人工智能无疑已经成为了当下科技的大热.那么什么是人工智能呢? ...

  9. DDR3调试记录

          FPGA采集视频数据并写到DDR3,然后从DDR3读出并送给显示终端显示.不能稳定显示.但用FPGA内部逻辑产生color bar写到DDR3后读出来显示正常.因此DDR3部分逻辑没有问题 ...

  10. Python之路【第十一篇】: 进程与线程理论篇

    阅读目录 一 背景知识二 进程2.1 什么是进程2.2 进程与程序的区别2.3 并发与并行2.4 同步与异步2.5 进程的创建2.6 进程的终止2.7 进程的层次结构2.8 进程的状态2.9 进程并发 ...