[WCF]DomainServices客户端操作异常处理
作为个人备忘,不做排版。此扩展函数用于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客户端操作异常处理的更多相关文章
- WCF基础教程之异常处理:你的Try..Catch语句真的能捕获到异常吗?
在上一篇WCF基础教程之开篇:创建.测试和调用WCF博客中,我们简单的介绍了如何创建一个WCF服务并调用这个服务.其实,上一篇博客主要是为了今天这篇博客做铺垫,考虑到网上大多数WCF教程都是从基础讲起 ...
- WCF 学习笔记之异常处理
WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...
- WCF学习之旅—WCF中传统的异常处理(十六)
WCF中的异常处理 在软件开发过程中,不可能没有异常的出现,所以在开发过程中,对不可预知的异常进行解决时,异常处理显得尤为重要.对于一般的.NET系统来说,我们简单地借助try/catch可以很容易地 ...
- [WCF编程]10.操作:流操作
一.流操作概述 在默认情况下,当客户端调用服务时,服务只有在接收到完整的消息后才会被调用,同样,客户端只有在包含了调用结果的返回消息被完整接受时,才会解除对它的阻塞. 对于数据量小的消息,这种交换模式 ...
- 重温WCF之WCF传输安全(十三)(4)基于SSL的WCF对客户端采用证书验证(转)
转载地址:http://www.cnblogs.com/lxblog/archive/2012/09/20/2695397.html 前一篇我们演示了基于SSL的WCF 对客户端进行用户名和密码方式的 ...
- 重温WCF之构建一个简单的WCF(一)(2)通过Windows Service寄宿服务和WCF中实现操作重载
参考地址:http://www.cnblogs.com/zhili/p/4039111.html 一.如何在Windows Services中寄宿WCF服务 第一步:创建Windows 服务项目,具体 ...
- 使用WCF测试客户端 z
http://blog.csdn.net/u013036274/article/details/50570989 [是什么] WCF测试客户端(WCF Test Client)是一个用来测试WCF服务 ...
- WebService及WCF获取客户端IP,端口
wcf获取客户端IP,端口 var context = OperationContext.Current; var properties = context.IncomingMessageProper ...
- 启用WCF测试客户端的相关技巧
在Visual Studio之外打开WCF测试客户端有两种方法:第一种方法是到其所在路径(Visual Studio安装路径\Common7\IDE\WcfTestClient.exe)双击打开.第二 ...
随机推荐
- Select Option
jQuery获取Select元素,并选择的Text和Value: 1. $("#select_id").change(function(){//code...}); //为Sele ...
- package.json
1,项目按住shift,右击鼠标:"在此处打开命令行窗口" 2,cmd输入:npm init 输入name,varsion....license项的信息,yes 3,此项目中自动创 ...
- laravel 获取 当前url 的方法, 有的是获取 全部url 有的只获取 主页其他 部分
1. 使用 Request 类: $url = Request::getRequestUri(); 2. 使用 $request 对象: public function show(Request $r ...
- equals和==的区别
---恢复内容开始--- equals:用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同. 1.第一:对象不同,内容相同: ==:等于.比较两个地址是不是一样的(地址一样值肯定一样)(比 ...
- NGUI 层级关系控制
NGUI元素的遮挡情况是不依赖空间关系,所以在NGUI上添加特效有时候特别蛋疼,特别是美术同学还要依赖空间关系来控制特效效果,那先看看看NGUI的层级是怎么处理的,不过下面的描述都是针对单个相机下的P ...
- 单例模式-C++
单例模式(Singleton) --本文内容部分引自<大话设计模式 Chapter21> 一.概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 通常我们可以让一个全局变量使一个 ...
- 响应链和UIKit框架
Event Delivery: The Responder Chain When you design your app, it’s likely that you want to respond t ...
- 关于ios 3D变换 CGAffineTransformIdentity
每次做完3D变换以后,重新设置view的frame时,记得用CGAffineTransformIdentity 对3D变换进行还原,否则将会影响frame.当你对view进行3D变换后,重新设置vie ...
- Stack的c实现
用c语言实现stack的初始化,push,pop和Clear操作 #include<stdio.h> #include<stdlib.h> #include<assert ...
- JMeter学习-022-JMeter 分布式测试(性能测试大并发、远程启动解决方案)
在使用 JMeter 进行性能测试时,难免遇到要求并发请求数比较的场景,此时单台测试机的配置(CPU.内存.带宽等)可能无法支持此性能测试场景.因而,此时 JMeter 提供的分布式测试功能就有了用武 ...