zoukankan      html  css  js  c++  java
  • [WCF]DomainServices客户端操作异常处理

    作为个人备忘,不做排版。此扩展函数用于DomainServices的Load及SubmitChanges时处理Error信息,包括验证消息、实体冲突。

     1 public static string ToErrorString(this System.ServiceModel.DomainServices.Client.OperationBase op)
     2 {
     3     //来自http://www.cnblogs.com/ainijiutian/p/3616198.html
     4     if (op.HasError)
     5     {
     6         op.MarkErrorAsHandled();
     7 
     8         System.Text.StringBuilder sb = new System.Text.StringBuilder();
     9         if (op is System.ServiceModel.DomainServices.Client.LoadOperation)
    10         {
    11             var lo = op as System.ServiceModel.DomainServices.Client.LoadOperation;
    12             if (lo.ValidationErrors != null && lo.ValidationErrors.Any())
    13             {
    14                 sb.Append("Validation Errors:
    " + string.Join("
    ", lo.ValidationErrors.Select(t => t.ErrorMessage)) + "
    
    ");
    15             }
    16             sb.Append("Error message:
    " + lo.Error.ToString());
    17 
    18             return sb.ToString();
    19         }
    20         else if (op is System.ServiceModel.DomainServices.Client.SubmitOperation)
    21         {
    22             var so = op as System.ServiceModel.DomainServices.Client.SubmitOperation;
    23             if (so.EntitiesInError != null && so.EntitiesInError.Any())
    24             {
    25                 foreach (var e in so.EntitiesInError)
    26                 {
    27                     sb.Append(so.EntitiesInError.First().GetType() + " " + e.ToString() + ":
    ");
    28                     if (e.HasValidationErrors)
    29                     {
    30                         sb.Append("Validation Errors:
    " + string.Join("
    ", e.ValidationErrors.Select(t => t.ErrorMessage)) + "
    ");
    31                     }
    32                     if (!e.EntityConflict.IsDeleted && e.EntityConflict != null && e.EntityConflict.PropertyNames != null && e.EntityConflict.PropertyNames.Any())
    33                     {
    34                         sb.Append("Entity conflict:
    " + string.Join(", ", e.EntityConflict.PropertyNames) + "
    ");
    35                     }
    36                 }
    37                 sb.Append("
    ");
    38             }
    39             sb.Append("Error message:
    " + so.Error.ToString());
    40             //if (sb.ToString().Contains("STAMP")) //timestamp
    41             //{
    42             //    return "Document has been changed in other place,please undo the current changes and reopen .";
    43             //}
    44             //else
    45             //{
    46             //    return sb.ToString();
    47             //}
    48             return sb.ToString();
    49         }
    50     }
    51     return op.ToString();
    52 }
  • 相关阅读:
    js常用工具函数
    vue-cli跨域问题解决
    charles抓包404问题(左侧不显示配置)
    vuex存储与本地储存(localstorage、sessionstorage)的区别(笔记)
    借助axios的拦截器实现Vue.js中登陆状态校验的思路(笔记)
    cornerstone使用注意点
    本地仓库连接远程仓库,git本地新建项目上传到远程git仓库上正确流程
    做一个不那么差的程序员
    解决 php Call to undefined function shm_attach()
    Redis 常用的数据结构
  • 原文地址:https://www.cnblogs.com/ainijiutian/p/3616198.html
Copyright © 2011-2022 走看看