2009-09-02 123 views
8

我正在构建一个使用WCF服务(wsHttp绑定)与我的服务器通信的.NET 3.5 Winforms应用程序,该服务器从SQL Server获取数据并将其传递回Winforms应用程序(智能客户端)。我注意到,自运行Windows 7 RTM以来,第一次WCF通信时大约有30秒延迟,从那时起,它就像以前一样正常。来自Windows 7的慢速Web服务(和WCF服务)调用

我注意到使用ASMX服务的另一个应用程序(Desaware许可系统)也遇到了同样的问题,启动延迟一切都很好。

第一次启动不是.NET complilation/JIT问题,我可以马上关闭应用程序并重新执行。服务器运行Windows 2003/IIS 6.在Windows 7之前,一切都很好。

我试图删除我的防病毒软件,同样的问题。我无法弄清楚为什么会有这个初始延迟,这是一个重要的延迟。我也注意到,在调试窗口中,应用程序以System.IdentityModel行开始延迟,它看起来好像在Windows 7上有安全/认证更改,我认为这会导致延迟。

任何人有任何建议如何解决这个问题? VS 2008/.NET 3.5。

谢谢。

回答

14

我在绑定配置中添加了下列条目,它似乎解决了这个问题。

useDefaultWebProxy = “假”

+0

希望我能给一个以上upvote;这节省了我的一天!非常感谢! – 2011-07-20 10:59:28

0

30秒的延迟,听起来像是在等待什么,然后在30秒后超时。

这可能与Windows 7计算机和服务器之间的身份验证有关。检查事件日志将是一个很好的开始。

+0

我没有检查两端的事件日志,所有检查都很好。 – Neal 2009-09-02 21:23:14

+0

接下来要检查的是网络。两台机器是否在同一个域中?机器之间或机器与域控制器之间是否存在防火墙?此外,从Windows XP进行测试,以防代码发生变化。 – 2009-09-03 06:37:01

-1

这个工作对我的Windows 7和连接到Web服务器

useDefaultWebProxy = “假”

谢谢 道格拉斯

+6

-1:这不正是前面的回答所说的吗? – 2009-12-09 02:21:17

2

我遇到同样的问题。我创建使用的ChannelFactory对象我的代理,发现除了指定useDefaultWebProxy为绑定服务器端,但也有必要指定选项客户端:

HttpTransportBindingElement httpTransport = new HttpTransportBindingElement 
{ 
    MaxBufferPoolSize = int.MaxValue, 
    MaxBufferSize = int.MaxValue, 
    MaxReceivedMessageSize = int.MaxValue, 
    AuthenticationScheme = System.Net.AuthenticationSchemes.Ntlm, 
    UseDefaultWebProxy = false 
} 

我发现,问题仅发生当使用当前的Windows凭据。如果您通过特定凭证,则表现如预期。但是,设置UseDefaultWebProxy客户端修复了问题。

希望这可以帮助别人!