服务端增加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 }   
时间: 2024-12-11 23:24:32

服务端增加WCF服务全局异常处理机制的相关文章

TCP协议下的服务端并发,GIL全局解释器锁,死锁,信号量,event事件,线程q

TCP协议下的服务端并发,GIL全局解释器锁,死锁,信号量,event事件,线程q 一.TCP协议下的服务端并发 ''' 将不同的功能尽量拆分成不同的函数,拆分出来的功能可以被多个地方使用 TCP服务端实现并发 1.将连接循环和通信循环拆分成不同的函数 2.将通信循环做成多线程 ''' # 服务端 import socket from threading import Thread ''' 服务端 要有固定的IP和PORT 24小时不间断提供服务 能够支持并发 ''' server = sock

android上传图片、视频、文件,服务端使用wcf接收

最近一直在搞android上传图片.视频.文件,服务端使用wcf接收,本文对调试中的遇到的问题进行记录. 首先android上传一些小图片是比较容易的一天下来差不多就能调试出来,但是上传一些大的文件时就出现各种问题,包括wcf默认支持64k的文件,后来大图片可以上传了,但是传视频又有问题,上传的视频打不开,经过努力google最后问题终于解决了.作者kwstu QQ806693619 以下是调试代码:原文链接:http://www.kwstu.com/ArticleView/kwstu_2013

服务端软件的服务品质

Web服务端软件的服务品质概要 软件品质概述 提供同样功能.产品和服务的服务者中, 竞争力来自功能的多样化和服务品质的差异化, 无论是个体.企业还是国家. 这里的服务指功能.产品的实现程度和处理能力,以及研发/客服提供的技术支持程度(7*24, 随时响应, 沟通便捷,快速解决,温馨提示,有效指南等). 从某种意义来说, 一切皆服务. 功能和产品只是形式, 服务才是本质.服务响应某种需求从而具备存在价值.个体.企业为社会提供某种类型.某种程度的服务,并获得相应回报. 程序员提供的服务是,在特定的工

SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端、Eureka 服务信息、Eureka 发现管理、Eureka 安全配置、Eureka-HA(高可用) 机制、Eureka 服务打包部署)

1.概念:Eureka 服务发现框架 2.具体内容 对于服务发现框架可以简单的理解为服务的注册以及使用操作步骤,例如:在 ZooKeeper 组件,这个组件里面已经明确的描述了一个服务的注册以及发现操作流程,在整个 Rest 架构里面,会存在有大量的微服务的信息. 在 SpringCloud 之中使用了大量的 Netflix 的开源项目,而其中 Eureka 就属于 Netflix 提供的发现服务组件,所有的微服务在使用之中全部向 Eureka 之中进行注册,而后客户端直接利用 Eureka 进

服务端软件的服务品质保证

提供同样功能.产品和服务的服务者中, 竞争力来自功能的多样化和服务品质的差异化, 无论是个体.企业还是国家. 这里的服务指功能.产品的实现程度和处理能力,以及研发/客服提供的技术支持程度(7*24, 随时响应, 沟通便捷,快速解决,温馨提示,有效指南等). 从某种意义来说, 一切皆服务. 功能和产品只是形式, 服务才是本质.服务响应某种需求从而具备存在价值.个体.企业为社会提供某种类型.某种程度的服务,并获得相应回报. 程序员提供的服务是,在特定的工作环境和企业文化中,运用可用的资源以及自己的知

WCF服务一:WCF服务简介

一.回顾开发历史: 软件架构的设计经历了:从面向对象程序,到面向组件程序设计,再到面向服务程序设计.这三种方式都致力于同一个目标:封装和重用. 面向对象程序设计:类封装功能并提供代码重用. 面向组件程序设计:用以共享封装了可重用类的二进制文档.最初,这一点只是针对本机,随着COM,DCOM和.NET Remoting的问世,才发展到分布式环境.虽然这些分布式的方法不尽相同,但是都可以实现跨进程.跨机器.面向组件程序设计有很多局限性,最明显的局限是与一些特定技术的耦合过深.例如:JAVA客户端如何

hubilder打包+C#服务端个推服务实现

关于推送鼓捣了好长时间,这里不再写helloworld了,只讲里面遇到的问题. 1.关于苹果开发者平台上的注册 网上很多的教程,只要按照步骤来设置就行了,在 iOS证书(.p12)和描述文件(.mobileprovision)申请 这篇文章里面讲的很清楚,文章中也说明了,如果要使用推送功能,那么在申请AppID的时候要选择“Push Notifications”这个选项.这篇文章说的很详细,总结下来有下面几点内容 1.申请苹果AppID,一个App里的证书都基于这个AppID2.生成证书请求文件

samba之linux作为服务端提供文件共享服务

准备2台centos7,一台作为服务端,一台作为客户端客户端安装软件samba-client,cifs-utils安装服务端软件sambayum install samba -y通过rpm -ql samba找到下面两个核心服务,第一个为名字解析服务,第二个为主要服务/usr/lib/systemd/system/nmb.service/usr/lib/systemd/system/smb.service配置文件路径/etc/samba/smb.conf启动服务systemctl start s

SpringMVC__配置视图解析以及服务端重定向和服务端跳转简单代码

applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.spri