WCF异常分析

WCF的代码实例网上到处都是,但是在实际的使用过程中总会出现很多问题,我就我在项目中使用WCF碰到的问题做个总结:

(注:要看到服务端真正异常配置includeExceptionDetailInFaults="true")

一。现象:界面假死不抛出任何异常(按常理超过等待时间应该抛出超时异常但是没有抛出不知道是什么原因)或抛出超时异常。

代码环境:WinForm+netTcpBinding。

原因分析:因为netTcpBinding和wsHttpBinding都是有状态连接所以造成这种现象可能是没有及时释放资源或当前会话数超过maxConcurrentSessions配置节配置数。basicHttpBinding是无状态连接所以不存在此问题

解决方法:及时释放资源,增大maxConcurrentSessions配置数

二。现象:超时异常。

代码环境:WinForm+netTcpBinding

原因分析:造成这个现象会有很多原因1.接受信息长度超过maxReceivedMessageSize配置节配置数。2.返回数组长度超过 maxArrayLength配置节配置数。3.返回字节数超过maxBytesPerRead配置节配置数。4.返回字符串长度超过maxStringContentLength配置节配置数。5.获取表名称的字符数超过maxNameTableCharCount配置节配置数。

6.可序列化的项数超过maxItemsInObjectGraph配置节配置数。例如你要返回或接受一个有10个T,T包含有5个属性(基本类型)组成的List<T>或是一个有10行5列DataTable组成的DataSet,它们分别有50项。如果没有加大maxItemsInObjectGraph配置节的配置数很容易在返回较大列表时出现这个错误,当然应当使用分页或分批返回列表尽量避免传递过大列表

解决方法:根据实际情况设定相应的配置节,或是采用续传,分页等合理的手段避免超限

时间: 2024-09-17 22:19:33

WCF异常分析的相关文章

MySQL · 捉虫动态 · MySQL 外键异常分析

外键约束异常现象 如下测例中,没有违反引用约束的插入失败. create database `a-b`; use `a-b`; SET FOREIGN_KEY_CHECKS=0; create table t1(c1 int primary key, c2 int) engine=innodb; create table t2(c1 int primary key, c2 int) engine=innodb; alter table t2 add foreign key(c2) referen

mysql 查询结果异常分析

title: MySQL · mysql · mysql 查询结果异常分析 author: 张远 现象 查询条件类型变化后,查询出了不正确的结果. create table t1(id int primary key, a varchar(50) DEFAULT NULL, key idx_a(a)) engine=innodb; show create table t1; insert into t1 values(1,'6036000240201612190005565273'); inse

SSRS 2008 ReportServerTempDB增长异常分析

  这两天收到一SQL 2008 R2数据库服务器的磁盘空间告警,在检查过程中发现ReportServerTempDB已经暴增到60多GB,其中数据文件接近60G,日志文件9G大小左右.如下截图所示 我 们知道ReportServerTempDB是SSRS使用的临时数据库.这个数据库负责存储中间处理结果,例如报表服务器生成的会话和执行数据.缓存报 表以及工作表.正常情况下,Report Server能够周期性地清除ReportServerTempDB中的到期的和孤立的数据.后台进程定期清理时间间

Linux内核中断和异常分析(上)

中断,通常被定义为一个事件.打个比方,你烧热水,水沸腾了,这时候你要去关掉烧热水的电磁炉,然后再去办之前手中停不下来的事情.那么热水沸腾就是打断你正常工作的一个信号机制.当然,还有其它的情况,我们以后再做分析.       中断也就是这样产生的,中断分为同步中断还有异步中断.       同步中断在Intel的手册中被称为异常,而异步中断被称作中断.打个比方在ARM处理器的异常种类就有不少,有未定义指令异常,软中断异常,快中断异常等等.异常是由程序错误产生的,或者是内核必须处理的异常条件产生的.

异常分析初探

异常在Java中是非常重要的一个内容,了解异常有助于我们写出更加健壮的代码,本文将探讨一下几个问题: 1 异常是怎么被JVM捕获的? 2 新建异常实例是否耗时?为什么会耗时?是否能够避免? 3 为什么不推荐使用printStackTrace()打印异常信息? 4 spring jdbc运行时异常种类概要 5 什么时候应该抛出数据库运行时异常 1. 异常怎么被JVM捕获的 在了解这个之前首先介绍下java的异常表(Exception table),异常表是JVM处理异常的关键点,在java类中的每

HybridDB · 源码分析 · MemoryContext 内存管理和内存异常分析

背景 最近排查和解决了几处 HybridDB for PostgreSQL 内存泄漏的BUG.觉得有一定通用性. 这期分享给大家一些实现细节和小技巧. 阿里云上的 HybridDB for PostgreSQL 是基于 PostgreSQL 开发,定位于 OLAP 场景的 MPP 架构数据库集群.它不少的内部机制沿用了 PostgreSQL 的实现.其中就包括了内存管理机制 MemoryContext. 一:PostgreSQL 内存管理机制 PostgreSQL 对内存的使用方式主要分两大块

Java常见内存溢出异常分析与解决_java

Java虚拟机规范规定JVM的内存分为了好几块,比如堆,栈,程序计数器,方法区等,而Hotspot jvm的实现中,将堆内存分为了三部分,新生代,老年代,持久带,其中持久带实现了规范中规定的方法区,而内存模型中不同的部分都会出现相应的OutOfMemoryError错误,接下来我们就分开来讨论一下.java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都出于以下原因: JVM内存过小.程序不严密,产生了过多的垃圾. 导致OutOfMemor

C++关键字operator delete异常分析解答

C 中delete表达式执行的操作是:1,调用析构函数:2,释放对象内存(operator delete(-)). 如果父类的析构函数没有声明为virtual函数,且子类中至少存在一个virtual函数,此时将子类的对象地址赋值给父类指针.当对父类的指针执行delete操作时,会调用父类析构函数,然后在释放内存时(即delete表达式执行的操作的2,释放对象内存)出现崩溃. 然而如果子类中不存在一个virtual函数时,执行上面同样的操作就不会出现崩溃. 原因分析如下: //已知本示例 父类的析

WCF异常问题

 "System.Transactions.Diagnostics.DiagnosticTrace"的类型初始值设定项引发异常 未处理System.TypeInitializationException HResult=-2146233036 Message="System.ServiceModel.Diagnostics.TraceUtility"的类型初始值设定项引发异常. Source=System.ServiceModel TypeName=System.S