• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
彭旭
天空不留痕迹,鸟儿却已飞过……
博客园    首页    新随笔    联系   管理    订阅  订阅

[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:\r\n" + string.Join("\r\n", lo.ValidationErrors.Select(t => t.ErrorMessage)) + "\r\n\r\n");
15             }
16             sb.Append("Error message:\r\n" + 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() + ":\r\n");
28                     if (e.HasValidationErrors)
29                     {
30                         sb.Append("Validation Errors:\r\n" + string.Join("\r\n", e.ValidationErrors.Select(t => t.ErrorMessage)) + "\r\n");
31                     }
32                     if (!e.EntityConflict.IsDeleted && e.EntityConflict != null && e.EntityConflict.PropertyNames != null && e.EntityConflict.PropertyNames.Any())
33                     {
34                         sb.Append("Entity conflict:\r\n" + string.Join(", ", e.EntityConflict.PropertyNames) + "\r\n");
35                     }
36                 }
37                 sb.Append("\r\n");
38             }
39             sb.Append("Error message:\r\n" + 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 }

 

 

 

 

 

 

 

 

知识共享许可协议
本文 由 彭旭 创作,采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
posted @ 2014-03-21 16:28  彭旭  阅读(478)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3