首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理

一、异常的抛出与Close的失败 一般情况下,当服务端抛出异常,客户客户端的服务代理不能直接关闭,WCF在执行Close方法的过程中会抛出异常。我们可以通过下面的例子来证实这一点。...在上面一篇文章中,我们就谈到过:WCF通过信道栈实现了消息的编码、传输及基于某些特殊功能对消息的特殊处理,而绑定对象是信道栈的缔造者,不同的绑定类型创建出来的信道栈具有不同的特性。...这两个异常,并将服务代理对象强行关闭(调用Abort方法)。...下面的代码演示了基于ChannelFactory创建服务代理的WCF客户端编程方式,对于直接通过强类型服务代理(继承ClientBase的服务代理类型)进行服务调用具有相同的结构。...为此,我们可以通过对Delegate的利用来进行代码的分离(服务调用代码和异常处理代码)。

1.9K90
您找到你想要的搜索结果了吗?
是的
没有找到

如何使用腾讯云轻量服务手动创建快照

关于如何使用腾讯云轻量服务手动创建快照,当你对虚拟机进行过一通操作之后,可以让你的虚拟机回滚到创建快照时的状态。...腾讯云的轻量是给我们提供免费的快照服务的,如果你在某一地区有1台轻量服务器,那么你最快可以创建2个免费快照,如果有2台轻量服务器,你可以最多创建4个免费快照,以此类推…… 如果我们要对网站或者是服务器上面的内容进行修改的话...梦想之路用的是腾讯云的轻量服务器,这里就以轻量服务器为例介绍一些如何手动生成快照,快照相当于对你的服务器进行了一次全面备份,可以让我们回档到快照生成时的状态…… 腾讯云轻量服务手动生成快照的方法很简单...,控制台→轻量应用服务器→选择想要生成快照的轻量服务器→快照→创建快照。...简单几部就可以完成腾讯云轻量服务器的创建,以后如果我们想要对服务器或者是网站上的内容进行修改的时候强烈建议事先创建一个快照,让我们在操作失误以后还可以快速的恢复到之前的状态。

6K50

故障分析 | 如何通过 blktrace 排查磁盘异常

作者:张昊 DBA,主要负责 MySQL 故障处理、DMP 产品支持,擅长 MySQL。 本文来源:原创投稿 * 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。...3持续观测磁盘 IO 通过 iostat 命令看到磁盘确实会出现一段时间的 IO 异常(此时磁盘 IO 使用基本为 0,但是磁盘使用率为 100%)。...5.2 工具使用 5.2.1 blktrace 采集命令 根据磁盘 IO 异常规律使用 blktrace 工具采集磁盘异常期间 25s 的数据。...5.2.4 对比试验 客户环境使用 SATA 盘做的 RAID5(这里使用了 DELL 的 RAID 控制器固件),客户找了一台相同配置的机器,直接用 SATA 盘做数据盘,没有发现磁盘异常,初步定位故障点在

62010

WCF技术剖析之五:利用ASP.NET兼容模式创建支持会话(Session)的WCF服务

在《基于IIS的WCF服务寄宿(Hosting)实现揭秘》中,我们谈到在采用基于IIS(或者说基于ASP.NET)的WCF服务寄宿中,具有两种截然不同的运行模式:ASP.NET并行(Side by Side...对于前者,WCF通过HttpModule实现了服务的寄宿,而对于后者,WCF服务寄宿通过一个HttpHandler实现。...接下来,我们就通过一个简单的例子,一步步地创建这样的会话服务。本案例采用如图1所示的3层结构。 (Source Code从这里下载) ?...WCF服务定义成“累积计算服务”:保留上一次运算的结果,并将其作为后续运算的操作数。...那么对于ASP.NET兼容模式下的WCF也一样,要想让服务端能够识别会话,就需要让每个服务调用的HTTP请求携带Session的识别信息,我们也可以通过传递Cookie的方式来解决这个问题。

797100

故障演练 | 微服务架构下如何做好故障演练

什么是故障演练 故障演练是指模拟生产环境中可能出现的故障,测试系统或应用在面对故障时的反应和响应能力。 故障演练可以模拟各种故障情况(网络故障、数据库故障服务过载,CPU或内存异常等)。...云原生、微服务架构场景下故障模拟的挑战 微服务的架构复杂性:微服务由许多小型、相互依赖的服务组成,部署架构复杂。在演练过程中需要考虑服务间的交互和依赖。...,方便用户在开发测试中以及生产环境中模拟现实世界中可能出现的各类异常,帮助用户发现系统潜在的问题。...如何进行故障演练 故障演练通常可以按照面的流程和步骤来进行: 演练前 | 确认演练对象与目标 确定演练对象,例如可以是整个系统,某个部分,或者某个服务等等; 确定演练目标,包括期望模拟出哪些故障场景...演练前 | 制定故障应对策略 按照目标和需求开发故障响应计划,包括如何快速定位问题、处理方法和流程、在哪些问题下开展演练等等; 为处理问题的步骤定制标准操作程序,以便在演练期间可以更好的实施。

84030

WCF技术剖析之五:利用ASP.NET兼容模式创建支持会话(Session)的WCF服务

在《基于IIS的WCF服务寄宿(Hosting)实现揭秘》中,我们谈到在采用基于IIS(或者说基于ASP.NET)的WCF服务寄宿中,具有两种截然不同的运行模式:ASP.NET并行(Side by Side...对于前者,WCF通过HttpModule实现了服务的寄宿,而对于后者,WCF服务寄宿通过一个HttpHandler实现。...接下来,我们就通过一个简单的例子,一步步地创建这样的会话服务。本案例采用如图1所示的3层结构。 (Source Code从这里下载) ?...WCF服务定义成“累积计算服务”:保留上一次运算的结果,并将其作为后续运算的操作数。...那么对于ASP.NET兼容模式下的WCF也一样,要想让服务端能够识别会话,就需要让每个服务调用的HTTP请求携带Session的识别信息,我们也可以通过传递Cookie的方式来解决这个问题。

980100

使用C#创建及调用WCF完整实例 (Windows服务宿主)

这里直接说使用Windows 服务(Windows Service)作为宿主如何实现,其它方式不在此次教程之内 文章最后有本例的下载连接,包含源代码、说明教程、编译后文件 实例环境:Windows Server...2008 R2 + VS 2010(C#) 打开 VS 2010,选择 新建项目,选择 ”WCF”|”WCF 服务库 ”,注意这里是”WCF 服务库 ”,不是"WCF 服务应用程序" ?...好了,WCF服务库的代码部分就结束了,下面要开始配置,打开项目下的App.config文件 ?...配置一下项目属性,我的生成目录在F:\WCFTEST,生成项目 好的,WCF服务库已工作已结束。...开始宿主程序 右击解决方案,添加|新建项目”Windows”|”Windows 服务”,项目名就默认吧,不改了 在Windows服务项目中添加WCF服务库的引用 ? ?

3.8K70

WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的?

WCF内部是如何处理抛出的非FaultException异常的呢?...实际上,WCF对非FaultException异常的处理并不复杂,我们现在就来简单介绍一下相关的流程:在执行服务操作过程中,如果抛出一个非FaultException异常WCF会先判断IncludeExceptionDetailInFaults...开发是否开启,如果没有,WCF会手工创建一个MessageFault对象,并根据当前线程的语言文化从资源文件中获取一段固定的文本作为MessageFault的FaultReason(就是我们在《WCF基本的异常处理模式...如果IncludeExceptionDetailInFaults开启,WCF则会基于该异常对象创建ExceptionDetail对象,并将该对象作为明细对象创建MessageFault(采用固定FaultCode...那么,对于应用了ServiceDebugBehavior服务行为,并开启了IncludeExceptionDetailInFaults的场景,客户端如何能够把承载与Fault消息中的表示错误明细的XML

81890

使用C#创建WCF服务控制台应用程序

)  1、进入“控制面板”,打开“程序和功能”,点击左上角的“启用或关闭Windows功能”后,在“.NET Framework 4.6 高级服务”中的子节点选中“WCF 服务”,如下图所示: ?...3、点击“确定”按钮以便安装这些服务与组件,等待完成安装即可。 三、新建一个WCF服务库 1、使用VS2015新建一个WCF服务库,并将项目名称改为“MyWCFService”,如下图所示: ?...VS2015将会分别创建“IService1”接口、“Service1”类,“IService1”接口含GetData、GetDataUsingDataContract方法,并使用“Service1”类实现了该接口...四、新建一个WCF服务网站 1、点击打开IIS,新建一个网站,网站名称设置为“MyWCFService”,物理地址选择“D:\WCF”,端口从默认的80改为81,如下图所示: ?...4、将弹出“添加服务引用”对话框,在“地址”输入刚刚建的WCF服务网站地址(http://localhost:81/MyWCFService.MyWCFService.svc),点击“转到”按钮之后,将会在

1.8K00

WCF技术剖析之二十: 服务WCF体系中是如何被描述的?

同理,一个WCF服务的监听与执行同样需要通过一个进程来承载。我们将为WCF服务创建或指定一个进程的方式称为服务寄宿(Service Hosting)。...服务寄宿的方式大体分两种:一种是为一组WCF服务创建一个托管的应用程序,通过手工启动程序的方式对服务进行寄宿,所有的托管的应用程序均可作为WCF服务的宿主,比如Console应用、Windows Forms...服务寄宿的手段是为一个WCF服务类型创建一个ServiceHost对象(或者任何继承于ServiceHostBase的对象)。...无论采用哪种寄宿方式,在为某个服务创建ServiceHost的过程中,WCF框架内部会执行一系列的操作,其中最重要的步骤就是为服务创建服务描述(Service Description)。...客户端行为体现的是WCF如何进行服务调用的方式,而服务端行为则体现了WCF的请求分发方式。

96860

WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)

Errors是一个MetadataConversionError对象的集合,包含一些在进行元数据导出过程中出现的错误或者警告消息,我们可以利用它来进行一些相应的异常处理;字典类型的State可以作为一个容器盛放一些在进行元数据导出过程中动态使用到的对象...正是因为WSDL是目前描述Web服务做好的语言,建立WCF终结点与WSDL元素之间的匹配关系,以及基于该匹配关系的元数据导入和导出的实现,是WCF元数据框架体系的一个最为重要的目标。...服务的描述。...三、 实例演示:如何通过WsdlExporter导出元数据 为了让读者更见深刻地认识WsdlExporter,我们现在做一个简单的实例演示。我们通过一个简单的控制台(Console)应用作为演示程序。...首先我们先演示如何利用WsdlExporter导出一个终结点,为此我们定义了一个处理订单的服务契约,契约接口和使用到的数据类型(数据契约)定义如下: 1: using System; 2:

73060

WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)

通过《实现篇》对WSDL元素和终结点三要素的之间的匹配关系的介绍,我们知道了WSDL的Binding元素来源于终结点的绑定对象,那么这些基于Binding的元数据以及相应的策略断言是如何被写入WSDL的呢...此外,WSDL导出扩展并不限于被相应的绑定元素用于添加Binding相关的元数据,我们也可以采用终结点行为、契约行为和操作行为(服务行为不可以用于WSDL导出扩展)作为WSDL导出扩展实现在最终生成的WSDL...二、策略导出扩展(Policy Export Extension) 在《WCF技术剖析(卷1)》的第3章对绑定的介绍中,我们说绝大部分WS规范最终都通过绑定实现,或者说,WCF通过定义相应的绑定元素对某个...在WCF元数据结构体系中,通过策略导出扩展实现对WS-Policy策略断言的导出。...MetadataExporter exporter, PolicyConversionContext context); 4: } 当WsdlExporter执行ExportEndpoint方法的最后阶段,会创建

57460

服务架构如何避免大规模故障

本文基于一些在RisingStack的顾问咨询与开发经验,介绍了如何运用一些最常用的技术和架构模型,去构建与维护一个高可用的微服务系统。 如果你不熟悉本文中的模式,并不意味着你做错了什么。...*优雅的服务降级 Graceful Service Degradation 微服务最佳优势之一,当某个组件单独失败时,你可以实现优雅的服务降级,进行故障隔离。...微服务的独立失败(理论上) 在大多数情况下,在一个分布式系统中,应用程序之间互相依赖,实现一种优雅的服务降级,这是很困难的,你需要采取多种故障切换逻辑(其中一些会在本文后面进行讨论),应对临时的故障与中断...*故障切换缓存 Failover Caching 服务通常会因为网络问题和系统的变更而失败。...由于自愈和先进的负载均衡,大多数中断只是暂时的,然而我们还应该找到一个解决方案,让我们的服务在这些故障中能够正常工作。这就是故障切换缓存,它可以帮助应用程序提供一些必要的数据。

37420

服务-如何捕获上游服务抛出异常?

是否允许交易等); 订单服务 拿到用户的基本信息后便创建对应的订单并保存到数据库中。...问题便在 订单服务 去调用 用户服务 时,如果 用户服务 查询失败(如用户状态被冻结,用户不允许等)并抛出了带有提示信息的异常,而在我们 订单服务 是无法获取到异常信息的,它会抛出 FeignC 自带的...FeignException异常,并不会携带用户服务本身抛出的异常,订单服务 会显示一个网络为500的请求失败异常 如:服务A 调用 服务B 服务B 在运行时 抛出一个异常: new RuntimeException...,在 订单服务 调用完毕后,对其进行非空判断,然后在 订单服务 返回异常信息。...自定义异常类 这里的 服务端 指服务提供者,也叫 上游服务;客户端 指 服务使用者,也叫下游服务

45660

服务架构如何避免大规模故障

服务架构通过一种良好的服务边界划分,能够有效地进行故障隔离。但就像其他分布式系统一样,在网络、硬件或者应用级别上容易出现问题的机率会更高。...本文基于一些在RisingStack的顾问咨询与开发经验,介绍了如何运用一些最常用的技术和架构模型,去构建与维护一个高可用的微服务系统。 如果你不熟悉本文中的模式,并不意味着你做错了什么。...*优雅的服务降级 Graceful Service Degradation 微服务最佳优势之一,当某个组件单独失败时,你可以实现优雅的服务降级,进行故障隔离。...微服务的独立失败(理论上) 在大多数情况下,在一个分布式系统中,应用程序之间互相依赖,实现一种优雅的服务降级,这是很困难的,你需要采取多种故障切换逻辑(其中一些会在本文后面进行讨论),应对临时的故障与中断...由于自愈和先进的负载均衡,大多数中断只是暂时的,然而我们还应该找到一个解决方案,让我们的服务在这些故障中能够正常工作。这就是故障切换缓存,它可以帮助应用程序提供一些必要的数据。

39220

关于WCF服务在高并发情况下报目标积极拒绝的异常处理

最近弄了个wcf的监控服务,偶尔监控到目标服务会报一个目标积极拒绝的错误。一开始以为服务停止了,上服务器检查目标服务好好的活着。于是开始查原因。...一般来说目标积极拒绝(TCP 10061)的异常主要是2种可能: 1:服务器关机或者服务关闭 2:Client调用的端口错误或者服务器防火墙没开相应的端口 但是我们的服务本身是可以调用的,只是偶尔报这个错误...大概意思就是如果这个错误是一直发生的那么可能是服务器或者防火墙的问题,如果这个问题是“Sometime”发生的,那么可能是backlog的问题。...backlog是tcp层面的请求队列,当你调用socket发起请求的时候服务端会排成一个队列,在高并发情况下服务端来不及处理请求,那么有些请求就被直接被丢弃,于是就报了目标积极拒绝TCP10061的异常...有了backlog于是继续google关键字“WCF backlog”发现wcf binding配置确实有一个listenBacklog的项目,默认值是10,于是把服务的listenBacklog改成100

1.1K60
领券