2010-06-28 73 views
1

当尝试连接/与我的服务进行通信时,我必须等待几乎每20秒才会触发异常。由于这一切都将在本地网络上运行,我想将该超时时间缩短为5秒?我尝试减少我的客户端上的receiveTimeout,但它不起作用。我查看了我的代码20秒超时变量集,但找不到任何。我应该改变什么?WCF接收超时

回答

2

有不同的超时设置http://msdn.microsoft.com/en-us/library/ms731078.aspx。例如,它们可以在配置文件(web.config或app.config)中设置,例如参见http://msdn.microsoft.com/en-us/library/ms731343.aspx。在http://msdn.microsoft.com/en-us/library/ms731399.aspx下,您可以选择您使用的绑定并设置相应的设置。

已更新:您可能在TCP级别设置了超时。尝试减少(在NT 4.0的参数值3,具有名称InitialRTT)的TcpMaxConnectRetransmissions(默认值2)或TcpInitialRTT参数在注册表中,重新启动计算机,并尝试实验一次。关于21秒的影响,您可以在http://support.microsoft.com/kb/223450http://support.microsoft.com/kb/175523,http://support.microsoft.com/kb/170359http://www.boyce.us/windows/tipcontent.asp?ID=189中阅读。您可以阅读http://support.microsoft.com/kb/314053(适用于Windows XP)和http://technet.microsoft.com/en-us/library/cc739819(WS.10).aspx(适用于Windows Server 2003 SP2)的TCP/IP默认配置值的说明。

+0

目前我的客户端app.config中的代码如下所示: closeTimeout =“00:01:00”openTimeout =“00:01:00”receiveTimeout =“00:01:00”sendTimeout =“00 :01:00“ 这些设置是,让我等待aprox。在服务关闭时收到EndpointNotFoundException之前20秒。我应该把这个设置降低到5秒? – Tamer 2010-06-29 07:41:43

+0

可以使用Microsoft网络监视器(请参阅http://go.microsoft.com/fwlink/?linkid=103158&clcid=0x804)捕获,查看和分析网络流量。我想你在TCP级别上有问题(请参阅更新后的答案) – Oleg 2010-06-30 15:25:12

1

你可能实际上看到的是从你的web应用的冷启动。未找到服务异常会很快恢复,而您已经很难打开它,并且您开始排队服务请求,而不是WCF配置的服务请求。

但是,如果你有自己的网站卸载(应用程序域和工作进程),这可能需要20秒命中一个构建频道为您服务的代码。所以它可能被掩盖了。

如果您的网站和服务都在不同的应用程序池,然后这是maginfied因为它有冷启动的网站,然后冷启动该服务,这是在继承,而不是同时进行。

为了稍微缓解这个你可以使用保活/平的服务。一些只是不断点击URL来保持AppDomain在内存中,而工作进程仍然活着(如果不共享)。默认情况下,IIS 6会在工作20分钟后关闭工作进程,因此当第一个请求进入时,http.sys会启动一个新的工作进程,该工作进程会加载加载应用程序的框架,从而启动管道,你的代码,它传递给你的用户。 :)