zoukankan      html  css  js  c++  java
  • Silverlight与WCF错误处理:Server Not Found(3)

            前两篇主要介绍了WCF与客户端的错误传输,在实际的项目中,我们需要对服务契约中的每一个操作都进行try-catch捕捉异常,通常我们会将文件通过日志记录下来,

    当操作很多的时候,对每一个方法都添加Log处理程序是很不方便的,在ASP.NET中可以将其写在Application_Error中,WCF则提供了IErrorHandler类实现。

           IErrorHandler接口定义如下,主要提供了2个方法,具体见MSDN

       namespace System.ServiceModel.Dispatcher
      {
        public interface IErrorHandler
        {
            void ProvideFault(Exception error, MessageVersion version, ref Message fault);
            bool HandleError(Exception error);
        }
      }

        实现 HandleError 方法可确保执行错误相关行为,包括错误日志记录、确保快速报告故障、关闭应用程序等。本篇在前面的基础上使用该接口实现日志处理

        1.定义实现IErrorHandler的类

       public class ErrorHandler : IErrorHandler
       {
           public bool HandleError(System.Exception error)
           {
               return true;
           }
     
           public void ProvideFault(System.Exception error, MessageVersion version, ref Message fault)
           {
               //Log處理
        StreamWriter streamwriter = new StreamWriter(@"D:\log.txt");
               streamwriter.Write(error.Message);
               streamwriter.Close();
           }
       }
      

         在ProvideFault中定义日志处理逻辑,本部分代码仅作演示。

       2.在定义的SilverlightFaultEndpointBehavior的ApplyDispatchBehavior中添加该ErrorHandler

           endpointDispatcher.ChannelDispatcher.ErrorHandlers.Add(new ErrorHandler());

         经过简单的步骤,我们就实现了对WCF的日志全局处理,按照上面的代码逻辑,我们可以在D:\log.txt中看到记录的错误信息。

         下一篇将讲述以代码的方式实现对WCF错误信息的配置。

        

         代码下载:WcfExceptionLesson2.rar

  • 相关阅读:
    P5737 【深基7.例3】闰年展示
    P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here
    P1597 语句解析
    P5735 【深基7.例1】距离函数
    P1553 数字反转(升级版)
    P1598 垂直柱状图
    P1603 斯诺登的密码
    P5738 【深基7.例4】歌唱比赛
    Ext.GridPanel 用法总结(一)—— Grid基本用法
    使用CodeSmith快速规范开发.Net软件
  • 原文地址:https://www.cnblogs.com/626498301/p/2055539.html
Copyright © 2011-2022 走看看