服务端增加WCF服务全局异常处理机制
服务端增加WCF服务全局异常处理机制
服务端增加WCF服务全局异常处理机制,任一WCF服务或接口方式出现异常,将统一调用WCF_ExceptionHandler.ProvideFault方法,因此不需要每个方法使用try catch写法。 C# Code: /// <summary> /// WCF服务端异常处理器 /// </summary> public class WCF_ExceptionHandler : IErrorHandler { #region IErrorHandler Members /// <summary> /// HandleError /// </summary> /// <param name="ex">ex</param> /// <returns>true</returns> public bool HandleError(Exception ex) { return true; } /// <summary> /// ProvideFault /// </summary> /// <param name="ex">ex</param> /// <param name="version">version</param> /// <param name="msg">msg</param> public void ProvideFault(Exception ex, MessageVersion version, ref Message msg) { // //在这里处理服务端的消息,将消息写入服务端的日志 // string err = string.Format("调用WCF接口 '{0}' 出错", ex.TargetSite.Name) ",详情:\r\n" ex.Message; var newEx = new FaultException(err); MessageFault msgFault = newEx.CreateMessageFault(); msg = Message.CreateMessage(version, msgFault, newEx.Action); } #endregion } //来源:C/S框架网(www.csframework.com) QQ:1980854898 C# Code: /// <summary> /// WCF服务类的特性 /// </summary> public class WCF_ExceptionBehaviourAttribute : Attribute, IServiceBehavior { private readonly Type _errorHandlerType; public WCF_ExceptionBehaviourAttribute(Type errorHandlerType) { _errorHandlerType = errorHandlerType; } #region IServiceBehavior Members public void Validate(ServiceDescription description, ServiceHostBase serviceHostBase) { } public void AddBindingParameters(ServiceDescription description, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection parameters) { } public void ApplyDispatchBehavior(ServiceDescription description, ServiceHostBase serviceHostBase) { var handler = (IErrorHandler)Activator.CreateInstance(_errorHandlerType); foreach (ChannelDispatcherBase dispatcherBase in serviceHostBase.ChannelDispatchers) { var channelDispatcher = dispatcherBase as ChannelDispatcher; if (channelDispatcher != null) channelDispatcher.ErrorHandlers.Add(handler); } } #endregion } //来源:C/S框架网(www.csframework.com) QQ:1980854898 使用: C# Code: [ServiceBehavior(IncludeExceptionDetailInFaults = true)] [WCF_ExceptionBehaviour(typeof(WCF_ExceptionHandler))] public class AccountModuleService : IAccountModuleService { //来源:C/S框架网(www.csframework.com) QQ:1980854898 } 扫一扫加作者微信
参考文档:
C/S开发框架系统异常处理机制(Exception Handler) C/S开发框架事务处理机制 WCF服务错误:MessageSecurityException: 从另一方收到未进行安全处理或安全处理不正确的错误 WCF错误:服务器无法处理该请求IncludeExceptionDetailInFaults 解决方案:WCF客户端无法获取服务端抛出的异常详细信息 3.0高级版:客户端无法获取服务端抛出的异常详细信息 高级版及企业版用户:服务端增加对当前用户访问检测功能 使用批处理文件安装或卸载WCF服务(Windows服务) 使用批处理文件(.bat)安装WCF服务失败解决方案 WCF客户端和服务端配置要点 C/S开发框架企业版增加WCF服务自承载实时调试后台程序 ASPNET WebAPI后端框架全局异常跟踪及处理机制,保存系统异常消息日志 AspNet WebAPI后端框架消息处理机制(配置属性HttpConfiguration.MessageHandlers) WebApi接口安全机制:API接口限流防止恶意访问 ThrottlingHandler消息处理机制 IIS承载的WCF服务,配置.svc文件页面的MIME类型及处理程序映射
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |