服务端增加WCF服务全局异常处理机制
转自:http://www.csframework.com/archive/1/arc-1-20150109-2193.htm
服务端增加WCF服务全局异常处理机制,任一WCF服务或接口方式出现异常,将统一调用WCF_ExceptionHandler.ProvideFault方法,因此不需要每个方法使用try catch写法。
1 /// <summary> 2 /// WCF服务端异常处理器 3 /// </summary> 4 public class WCF_ExceptionHandler : IErrorHandler 5 { 6 #region IErrorHandler Members 7 8 /// <summary> 9 /// HandleError 10 /// </summary> 11 /// <param name="ex">ex</param> 12 /// <returns>true</returns> 13 public bool HandleError(Exception ex) 14 { 15 return true; 16 } 17 18 /// <summary> 19 /// ProvideFault 20 /// </summary> 21 /// <param name="ex">ex</param> 22 /// <param name="version">version</param> 23 /// <param name="msg">msg</param> 24 public void ProvideFault(Exception ex, MessageVersion version, ref Message msg) 25 { 26 // 27 //在这里处理服务端的消息,将消息写入服务端的日志 28 // 29 string err = string.Format("调用WCF接口 '{0}' 出错", ex.TargetSite.Name) ",详情:\r\n" ex.Message; 30 var newEx = new FaultException(err); 31 32 MessageFault msgFault = newEx.CreateMessageFault(); 33 msg = Message.CreateMessage(version, msgFault, newEx.Action); 34 } 35 36 #endregion 37 } 38 39 //来源:C/S框架网(www.csframework.com) QQ:1980854898
1 /// <summary> 2 /// WCF服务类的特性 3 /// </summary> 4 public class WCF_ExceptionBehaviourAttribute : Attribute, IServiceBehavior 5 { 6 private readonly Type _errorHandlerType; 7 8 public WCF_ExceptionBehaviourAttribute(Type errorHandlerType) 9 { 10 _errorHandlerType = errorHandlerType; 11 } 12 13 #region IServiceBehavior Members 14 15 public void Validate(ServiceDescription description, 16 ServiceHostBase serviceHostBase) 17 { 18 } 19 20 public void AddBindingParameters(ServiceDescription description, 21 ServiceHostBase serviceHostBase, 22 Collection<ServiceEndpoint> endpoints, 23 BindingParameterCollection parameters) 24 { 25 } 26 27 public void ApplyDispatchBehavior(ServiceDescription description, 28 ServiceHostBase serviceHostBase) 29 { 30 var handler = 31 (IErrorHandler)Activator.CreateInstance(_errorHandlerType); 32 33 foreach (ChannelDispatcherBase dispatcherBase in 34 serviceHostBase.ChannelDispatchers) 35 { 36 var channelDispatcher = dispatcherBase as ChannelDispatcher; 37 if (channelDispatcher != null) 38 channelDispatcher.ErrorHandlers.Add(handler); 39 } 40 } 41 42 #endregion 43 } 44 45 //来源:C/S框架网(www.csframework.com) QQ:1980854898
使用:
1 [ServiceBehavior(IncludeExceptionDetailInFaults = true)] 2 [WCF_ExceptionBehaviour(typeof(WCF_ExceptionHandler))] 3 public class AccountModuleService : IAccountModuleService 4 { 5 6 //来源:C/S框架网(www.csframework.com) QQ:1980854898 7 8 9 }
转载于:https://www.cnblogs.com/yf2011/p/5198776.html
服务端增加WCF服务全局异常处理机制相关推荐
- Nacos 服务端健康检查及客户端服务订阅机制源码分析(三)
Nacos 服务端健康检查 长连接 概念:长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发送链路检测包 注册中心客户端 2.0 以后使用 gRPC 代替 h ...
- vue服务端渲染 MySQL_vue服务端渲染
一.基本原理 1.服务端渲染实现原理机制:在服务端拿数据进行解析渲染,直接生成html片段返回给前端.然后前端可以通过解析后端返回的html片段到前端页面,大致有以下两种形式: a.服务器通过模板引擎 ...
- SpringCloud(第 003 篇)服务发现服务端EurekaServer微服务
SpringCloud(第 003 篇)服务发现服务端EurekaServer微服务 - 一.大致介绍 1.众所周知,在现在互联网开发中,访问地址的IP和端口号是动态的,一个服务停掉再重新启用后IP和 ...
- JAVA b2b2c多用户商城系统源码-服务发现服务端EurekaServer微服务
一.大致介绍 1.众所周知,在现在互联网开发中,访问地址的IP和端口号是动态的,一个服务停掉再重新启用后IP和端口就可能发生了改变,所以用硬编码是肯定不行了.于是我们尝试使用新的技术来解决这一难题.需 ...
- web服务端和游戏服务端的区别
最近几天在技术交流群里讨论到游戏服务端的一些技术细节,小说君发现有些做服务端的同学因为没有接触过游戏服务端,所以对游戏服务端产生了一些误解.因此今天的文章就从web服务端和游戏服务端的区别说起,简单介 ...
- React 服务端渲染 umi服务端渲染
react 服务端渲染原理不复杂,其中最核心的内容就是同构. node server 接收客户端请求,得到当前的req url path,然后在已有的路由表内查找到对应的组件,拿到需要请求的数据,将数 ...
- bean加载时调用@value时会出现空指针异常_SpringMVC全局异常处理机制
SpringMVC全局异常处理 SpringMVC除了可以做URL映射和请求拦截外,还可以做全局异常的处理.全局异常处理可能我们平时比较少机会接触,但是每个项目都肯定会做这个处理.比如在上一间公司,是 ...
- nuxt服务端php,nuxt服务端部署指南
nuxt是一款基于vue的服务端渲染框架,语法和vue基本保持一致,不过生命周期与vue不同,部署方式也和vue大相径庭,vue项目部署是spa的静态页面,只需build出来静态页面,但是nuxt是需 ...
- java vue 服务端渲染_vue服务端渲染缓存应用详解
服务端渲染简介 服务端渲染不是一个新的技术:在 Web 最初的时候,页面就是通过服务端渲染来返回的,用 PHP 来说,通常是使用 Smarty 等模板写模板文件,然后 PHP 服务端框架将数据和模板渲 ...
最新文章
- 【C】数组数组初始化总结
- 用Python玩转微信的正确姿势!
- powershell开源新闻及简介
- oracle 闪查询,Oracle的回闪查询
- Python之configparser模块详解和使用
- 什么影响matlab损失值,matlab – 在计算Logistic损失函数的值和梯度时避免数值溢出...
- Ajax 超完整教程
- 专业的售后服务管理系统
- 安卓pdf阅读器_2020年双十一有哪些电纸书、电子书阅读器值得买?Kindle、掌阅、文石、科大讯飞哪个好?...
- DB9接口定义、232串口公头和母头的引脚定义接法
- 基于STM32的四位TM1637完整程序
- 互补滤波算法及理论推导
- zTree插件setting配置详解
- 2022.02.10
- hdu1069 最长下降子列
- eclipse中Debug调试基本操作
- 通过ajax单独上传图片
- CentOS 6.4x64编译安装DRBD及备节点同步后容量变小的处理
- 深入理解金融交易报文Iso8583协议
- Event Driven Class OSAL 基于事件驱动的模拟操作系统
热门文章
- delphi中Record 和Packed Record的区别
- (转)WP7 开发学习(2):在WP7中使用网络请求
- [股市]跳搂指数(收藏)
- 计算机考研在线题库,考研全题库电脑版
- html5游戏面试题及答案,HTML5常见面试题及答案(二)
- php中is null,php中empty(), is_null(), isset()函数区别
- boost::filesystem 库的简单使用
- Linux函数之间的goto 跳转
- mtk一键usb驱动_6寸三防手持终端 Windows系统 安卓系统,高通 MTK 条码扫描 NFC
- 基于Flash的ECC纠错算法基本原理及软件C语言算法和硬件Verilog实现(PPT在主页可下载)