对WCF异常解决办法

开发 后端
WCF异常包括许多新的和改进的用于提高工作效率的功能。IDE 还进行了重新设计,从而向开发人员提供对.NET Framework 组件的直接访问。

首先,我认为这是一个很有用的插件,如果继续得到改进和增强,我想该插件会被更多开发者使用。对于WCF异常源码的学习,对于我们掌握怎样正确创建WCF异常插件工程是很有帮助的,而且也可从中学到不少编程技巧,例如委托和模板方法。希望大家一起研究下

缺省情况下,服务端发生异常,客户端会得到一个缺省的Exception,但这个Exception实例中并不包括详细的异常信息。只是告诉客户端服务端不能正常工作。在服务器和客户端模式的程序中,有些情况下,服务启是不能完全信赖客户端的。#t#

比如浏览器和web服务器之间,为了防止非法的客户端从异常消息中获取服务端的比较详细的信息,使得心怀叵测之人有机可乘,所以服务启对于异常 返回通常会比较模糊。WCF异常也采用了这种做法,缺省情况下,它返回给客户端的异常只告知我出错了,但不告诉人家他哪里错了。这通常应用于客户端来源不明的生产环境,以此保护服务程序。 

如果想消息更友好一些,可以通过IncludeExceptionDetailInFaults=True来设置返回具体的异常信息,这样就能告诉客户端服务出错了,并指出错误出在哪里。在程序开发阶段或者有些应用场合,客户端是受信任的,WCF异常为了让客户端能更详尽的了解服务端到底出了什么问题。

WCF异常也支持发送详细的错误消息给客户端,这更有利于应用程序调试。而返回详细异常有两种方法:***种:通过在服务端的配置文件中设置:<serviceDebug includeExceptionDetailInFaults="False" />,第二种方式为通过在代码中指定:[ServiceBehavior(IncludeExceptionDetailInFaults=true)]  

WCF异常中,还支持更详细的异常消息,它通过自定义的异常消息FaultMessage来传达更多的内容。WCF采用通用的Soap Fault来处理异常,并提供了FaultException和FaultException<FaultMessage>两个类型来描述和操作异常。

通讯异常,这通常是因为链路的原因,比如服务没有启动,网络阻塞等。这类异常是CommunicationException或者其派生类
2) 状态异常,这类异常通常是与上文提到的实例模式相关的,当访问了一个已经销毁的服务器对象时便会引发此类型的异常,它们通常是ObjectDisposedException
3) 服务异常,由服务端根据具体的业务逻辑触发,通常是FaultException 值得注意的是当抛出服务异常的时候,不同的实例模式的处理方式有所不同:

PerSession:这种模式下,抛出异常,服务实例将销毁,客户端抛出FaultException,客户端代理对象无法继续使用 PerCall:这种模式下,抛出异常,服务实例也将销毁。客户端代理对象无法继续使用 Single:这种模式下,抛出异常,服务实例会照旧运行。客户端代理无法继续使用。

责任编辑:chenqingxiang 来源: 计世网
相关推荐

2009-12-22 14:16:01

WCF连接服务超时

2012-11-12 11:33:06

路由器组网H3C

2015-03-09 15:41:08

MongoDB查询超时异常Socket Time

2023-08-28 10:54:09

容器Docker

2009-06-03 16:41:21

Eclipse乱码Eclipse

2009-11-09 10:10:13

WCF异常

2011-03-04 13:07:47

Filezilla

2011-06-17 11:10:51

Qt 中文 输出

2011-01-19 17:54:48

2010-02-24 14:05:08

WCF openati

2009-05-31 09:07:35

Oracle锁定

2010-02-26 15:46:48

Silverlight

2009-11-06 15:25:25

WCF异常

2010-01-15 09:38:08

磁盘被写保护解决办法

2017-05-04 20:15:51

iOSNSTimer循环引用

2009-01-14 09:16:24

SQL Server查SQL Server查SQL Server

2016-07-04 14:22:47

DevOps案例软件

2010-02-03 16:07:07

Ubuntu Auda

2011-02-22 17:14:20

2009-02-18 09:30:10

AJAX跨域XML
点赞
收藏

51CTO技术栈公众号