• 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

  • 相关阅读:
    FND_CONCURRENT.SET_COMPLETION_STATUS(服务器端函数)
    Oracle 11i与12R在功能上有什么区别
    查看oracle数据库最近执行了哪些sql语句
    How to Change the First Accounting Open Period
    AR Adjustment
    Oracle 临时表
    (转)不用安装oracle客户端,PL/SQL也能远程访问数据库
    ERP 是否支持同个账户,同一时间,只能有一个连接?
    多组织访问控制(MOAC)
    【精华ASP代码收集】
  • 原文地址:https://www.cnblogs.com/626498301/p/2055539.html
Copyright © 2020-2023  润新知