[WCF]DomainServices客户端操作异常处理

本文介绍了一个用于处理DomainServices Load和SubmitChanges操作时产生的错误信息的扩展函数,包括验证消息、实体冲突等详细错误处理。

作为个人备忘,不做排版。此扩展函数用于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 }

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/ainijiutian/p/3616198.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值