我正在构建一个.NET 3.5 Winforms应用程序,该应用程序使用WCF服务(wsHttp绑定)与我的服务器进行通信,该服务器从SQL Server获取数据并将其传递回Winforms应用程序(Smart Client)。我注意到,自从运行Windows 7 RTM以来,WCF第一次通信时有大约30秒的延迟,从那时起它就像以前一样正常。
我注意到另一个使用ASMX服务的应用程序(Desaware许可系统)也会遇到同样的问题,启动延迟然后一切都很好。
第一次启动不是.NET complilation / JIT问题,我可以立即关闭应用程序并再次执行。服务器正在运行Windows 2003 / IIS 6.在Windows 7之前一切正常。
我尝试删除我的防病毒软件,同样的问题。我无法弄清楚为什么存在这种初始延迟,这是一个重要的延迟。我在Debug窗口中也注意到,因为应用程序正在启动System.IdentityModel行的延迟,看起来好像在Windows 7上存在安全/身份验证更改我认为这会导致此延迟。
有人对如何解决此问题有任何建议吗? VS 2008 / .NET 3.5。
谢谢。
答案 0 :(得分:14)
我在绑定配置中添加了以下条目,似乎解决了这个问题。
useDefaultWebProxy = “假”
答案 1 :(得分: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客户端修复了问题。
希望这可以帮助某人,某处!
答案 2 :(得分:0)
30秒延迟,听起来好像在等待某事,然后在30秒后超时。
这可能与您的Windows 7计算机和服务器之间的身份验证有关。检查事件日志是一个很好的起点。
答案 3 :(得分:-1)
这适用于我的Windows 7并连接到WebServer
useDefaultWebProxy = “假”
谢谢 道格拉斯