c# - Wcf异常处理

标签 c# .net wcf

我注意到,例如,如果您执行 throw new InvalidCastException,客户端的 channel 状态就会出错。但是如果抛出new FaultException,客户端的 channel 状态是打开的。

出于好奇,一个人对 channel 进行故障而另一个人却没有的原因是什么?

最佳答案

FaultException是WCF中的特例。它的意思是表明服务端发生了一些错误,但与此同时,不会对 channel 造成故障。这是有道理的,因为您可以使用 FaultContractAttribute 将此信息嵌入到契约(Contract)中。揭示契约(Contract)的预期内容。

其他异常在 WS 世界中并不是真正可翻译的。异常是一种特定于技术的抽象,每个技术栈都有对该抽象的不同表示(或者在某些情况下,根本没有)。

也就是说,当服务器端抛出一个不是故障异常的异常时,WCF 运行时会将其视为灾难性的,并且 channel 必须 出错了,因为不知道您是否可以继续。

但是,使用 FaultException 意味着您对抛出它的原因以及底层 channel 是否受到影响有一些先见之明。

关于c# - Wcf异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578697/

相关文章:

c# - 在哪里可以找到 Win32 常量?

c# - DependencyObject.InvalidateProperty 不工作

.net - DataGridView 性能 - 是否取决于视频卡?

c# - CSC : error CS2001: Source file '.NETPortable,Version=v4.5,Profile=Profile78.AssemblyAttributes.cs' could not be found

c# - 部署 WCF 服务

c# - 从物理路径获取相对虚拟路径

c# - 绑定(bind) InputBindings 后 TextEdit Binding 变为 null

c# - 检测受密码保护的文档

wcf - Silverlight 中 ADO.NET 数据服务和 WCF 服务之间的重用类型

c# - 在 WCF 服务上运行 svcutil.exe 时,OperationBehaviorAttribute 错误