• Silverlight与WCF错误处理:Server Not Found(2)


         上一篇简单介绍了配置应用程序使客户端获取WCF抛出的SOAP异常,但是这些SOAP异常信息只包含InnerException ,Message,StackTrace,但是在实际情况中,我们

    可能需要提供更详细的信息,在WCF中可以发送给客户端未声明的和声明的两种类型的SOAP错误,上一篇文章实际上是使用了未声明的SOAP错误。

         本篇在上一篇的基础上演示通过WCF提供的FaultContractAttribute声明服务操作中的错误:

         1.自定义一个用于错误契约的自定义类型

      [DataContract]
      public class DataAccessFault
      {
      [DataMember]
      public string ExceptionMessage { get; set; }
     
      [DataMember]
      public string ExceptionCode { get; set; }
      }

         2.修改服务操作的实现

      [OperationContract]
      [FaultContract(typeof(DataAccessFault))]
      public void DoWork()
      {
        throw new FaultException<DataAccessFault>(new DataAccessFault()
                                            {
                                                ExceptionMessage = "发生了异常",
                                                ExceptionCode = "CS2011"
                                            });
       }

       在操作中抛出该类型的异常,同时添加契约的类型

        3.客户端更新引用后,修改处理代码

      FaultException<DataAccessFault> faultException = e.Error as FaultException<DataAccessFault>;
                                                      MessageBox.Show(faultException.Detail.ExceptionCode + ":" +
                                                                      faultException.Detail.ExceptionMessage);

       最终的效果如下:image

       本篇通过错误契约向Silverlight客户端传递强类型的错误信息,在实际情况中还是根据需要进行取舍。

        代码下载:WcfExceptionLesson1.rar

  • 相关阅读:
    linux下的shell 快捷键
    Python3.x和Python2.x的区别
    [Python2.x] 利用commands模块执行Linux shell命令
    redis缓存策略
    高并发解决方案
    java8 lambda表达式应用
    java读写分离的实现
    数据库读写分离
    大数据量处理方案:分布式数据库
    google的CacheBuilder缓存
  • 原文地址:https://www.cnblogs.com/626498301/p/2055147.html
Copyright © 2020-2023  润新知