2011-01-27 102 views
2

我有一个应用程序调用高频率的WCF服务。该应用程序开始工作正常,然后几分钟后,每个电话开始产生此错误:WCF请求通道超时错误

System.TimeoutException:请求频道超时尝试发送后00:02:00。增加传递给请求调用的超时值或增加绑定上的SendTimeout值。

我用尽了一切我能想到的来解决这个错误,如:

  • 上的服务设置多个concurrencymode:

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)] public class ListingService : IListingService

  • 设置服务web.config中最大并发呼叫/会话/实例的上限:

serviceThrottling maxConcurrentCalls="100000" maxConcurrentSessions="100000" maxConcurrentInstances="100000"

  • 对服务的Global.asax的设置上的Application_Start更高servicepointmanager defaultconnectionlimit:

protected void Application_Start(object sender, EventArgs e) { System.Net.ServicePointManager.DefaultConnectionLimit = 100000; }

  • 确保我关闭客户端连接:

using (var client = new ListingServiceClient()) { client.SaveListing(listing); client.Close(); }

这里是服务的web.config - http://pastebin.com/d9qtZUKN

不过,我仍然得到错误。我相信服务电话并不需要那么长时间。有任何想法吗?

+0

只是为了确认wcf调用实际上并没有花费那么长时间,我创建了一个web方法,该方法什么都不做,并从测试用例中多次调用它。几分钟后,它开始产生上面的超时错误。是否有一些我在IIS 7中达到的最大连接数限制? – Justin 2011-01-27 16:19:37

+0

有一个连接的限制,但它处理一个处理器的核心数量,所以你有一个不同的问题。在这个问题中写入服务的配置和方法体。 – vorrtex 2011-01-27 20:42:04

回答

0

问题是数据库超时导致WCF超时。