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

 public static string ToErrorString(this System.ServiceModel.DomainServices.Client.OperationBase op)
{
//来自http://www.cnblogs.com/ainijiutian/p/3616198.html
if (op.HasError)
{
op.MarkErrorAsHandled(); System.Text.StringBuilder sb = new System.Text.StringBuilder();
if (op is System.ServiceModel.DomainServices.Client.LoadOperation)
{
var lo = op as System.ServiceModel.DomainServices.Client.LoadOperation;
if (lo.ValidationErrors != null && lo.ValidationErrors.Any())
{
sb.Append("Validation Errors:\r\n" + string.Join("\r\n", lo.ValidationErrors.Select(t => t.ErrorMessage)) + "\r\n\r\n");
}
sb.Append("Error message:\r\n" + lo.Error.ToString()); return sb.ToString();
}
else if (op is System.ServiceModel.DomainServices.Client.SubmitOperation)
{
var so = op as System.ServiceModel.DomainServices.Client.SubmitOperation;
if (so.EntitiesInError != null && so.EntitiesInError.Any())
{
foreach (var e in so.EntitiesInError)
{
sb.Append(so.EntitiesInError.First().GetType() + " " + e.ToString() + ":\r\n");
if (e.HasValidationErrors)
{
sb.Append("Validation Errors:\r\n" + string.Join("\r\n", e.ValidationErrors.Select(t => t.ErrorMessage)) + "\r\n");
}
if (!e.EntityConflict.IsDeleted && e.EntityConflict != null && e.EntityConflict.PropertyNames != null && e.EntityConflict.PropertyNames.Any())
{
sb.Append("Entity conflict:\r\n" + string.Join(", ", e.EntityConflict.PropertyNames) + "\r\n");
}
}
sb.Append("\r\n");
}
sb.Append("Error message:\r\n" + so.Error.ToString());
//if (sb.ToString().Contains("STAMP")) //timestamp
//{
// return "Document has been changed in other place,please undo the current changes and reopen .";
//}
//else
//{
// return sb.ToString();
//}
return sb.ToString();
}
}
return op.ToString();
}

[WCF]DomainServices客户端操作异常处理的更多相关文章

  1. WCF基础教程之异常处理:你的Try..Catch语句真的能捕获到异常吗?

    在上一篇WCF基础教程之开篇:创建.测试和调用WCF博客中,我们简单的介绍了如何创建一个WCF服务并调用这个服务.其实,上一篇博客主要是为了今天这篇博客做铺垫,考虑到网上大多数WCF教程都是从基础讲起 ...

  2. WCF 学习笔记之异常处理

    WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...

  3. WCF学习之旅—WCF中传统的异常处理(十六)

    WCF中的异常处理 在软件开发过程中,不可能没有异常的出现,所以在开发过程中,对不可预知的异常进行解决时,异常处理显得尤为重要.对于一般的.NET系统来说,我们简单地借助try/catch可以很容易地 ...

  4. [WCF编程]10.操作:流操作

    一.流操作概述 在默认情况下,当客户端调用服务时,服务只有在接收到完整的消息后才会被调用,同样,客户端只有在包含了调用结果的返回消息被完整接受时,才会解除对它的阻塞. 对于数据量小的消息,这种交换模式 ...

  5. 重温WCF之WCF传输安全(十三)(4)基于SSL的WCF对客户端采用证书验证(转)

    转载地址:http://www.cnblogs.com/lxblog/archive/2012/09/20/2695397.html 前一篇我们演示了基于SSL的WCF 对客户端进行用户名和密码方式的 ...

  6. 重温WCF之构建一个简单的WCF(一)(2)通过Windows Service寄宿服务和WCF中实现操作重载

    参考地址:http://www.cnblogs.com/zhili/p/4039111.html 一.如何在Windows Services中寄宿WCF服务 第一步:创建Windows 服务项目,具体 ...

  7. 使用WCF测试客户端 z

    http://blog.csdn.net/u013036274/article/details/50570989 [是什么] WCF测试客户端(WCF Test Client)是一个用来测试WCF服务 ...

  8. WebService及WCF获取客户端IP,端口

    wcf获取客户端IP,端口 var context = OperationContext.Current; var properties = context.IncomingMessageProper ...

  9. 启用WCF测试客户端的相关技巧

    在Visual Studio之外打开WCF测试客户端有两种方法:第一种方法是到其所在路径(Visual Studio安装路径\Common7\IDE\WcfTestClient.exe)双击打开.第二 ...

随机推荐

  1. Web.xml各版本模版

    web.xml v2.3 web.xml v2.4 <?xml version="1.0" encoding="UTF-8"?> <web-a ...

  2. Android课程---关于数据存储的学习

    activity_data1.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  3. javaScript代码执行顺序

    javaScript是一种描述型脚本语言,由浏览器进行动态的解析和执行. 页面加载过程中,浏览器会对页面上载入的每个js代码块进行扫描. JavaScript是一段一段的分析执行的,在分析执行同一段代 ...

  4. 百钱买百鸡问题 php版本

    /* * 百钱买百鸡问题 * * 我国古代数学家张丘建在<算经>一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五:鸡母一,值钱三:鸡雏三,值钱一:百钱买百鸡,则翁.母 ...

  5. canvas中的rotate的使用方法

    今天在绘制一个足球滚动的时候,想使用rotate方法,之前看到这个方法的时候,并没有引起任何重视,无非就是和CSS3里的rotate一样的用么... 遗憾的是,事实并非如此,由于代码在公司,我也就不去 ...

  6. px与rem关系及转换

    PX特点 1. IE无法调整那些使用px作为单位的字体大小:2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位:3. Firefox能够调整px和em,rem,但是96%以上的中 ...

  7. java classpath getResource getResourceAsStream

    1.classpath 用于指定java运行时,jvm寻找class文件以及jar文件的存储目录.jvm依据classpath中出现的jar文件以及目录,依次寻找,直到找到指定class文件. 例:j ...

  8. 「iOS造轮子」之UIButton 用Block响应事件

    俗语说 一个不懒的程序员不是好程序员 造轮子,也只是为了以后更好的coding. coding,简易明了的代码更是所有程序员都希望看到的 无论是看自己的代码,还是接手别人的代码 都希望一看都知道这代码 ...

  9. Secure Digital

    https://en.wikipedia.org/wiki/Secure_Digital#Technical_details Secure Digital (SD) is a non-volatile ...

  10. 简单而兼容性好的Web自适应高度布局,纯CSS

    纯CSS实现的自适应高度布局,中间内容不符自动滚动条.兼容IE9以上.chrome.FF.关键属性是box-sizing: border-box. 不废话,直接上代码: <!doctype ht ...