参考:http://www.51crazy.net/Article/132.aspx
之前我在做WCF有关这块工作,经常遇到这个问题,开始一般我会增加SendTimeout的值,但现在我意识到,这是一种治标不治本的方法。下面也许才是才是本质上能够避免这种超时异常。
System.TimeoutException: 请求通道在等待 00:01:00 以后答复时超时。增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值。分配给此操作的时间可能是更长超时的一部分。 --->
System.TimeoutException: 对“http://localhost:8680/ReportService.svc”的 HTTP 请求已超过为 00:01:00 分配的超时。为此操作分配的时间可能是较长超时的一部分。 ---> System.Net.WebException: 操作超时
解决方案:*
1)首先保证客户端每次建立的连接在使用完成后进行关闭.即调用Close()方法,否则此连接会在设置的会话(一般为10分钟)后才自动关闭.期间任何客户端也无法使用此服务.
2)如果默认的连接数不能满足客户端的需要,可以增加连接数.配置文件如下:
maxConcurrentSessions :最大的会话数,主要针对于PerSession的情况,默认为10
maxConcurrentInstances:最大实例数,默认为26
3)使用Using关键字释放服务代理对象,但有的时候,过于频繁实例服务代理对象对性能也会受到影响,这就需要在两者之间做出权衡问题。折中的一个解决办法,我认为比较合适。