来自Windows 7的慢速Web服务(和WCF服务)调用

时间:2009-09-02 19:37:47

标签: wcf web-services windows-7 asmx

我正在构建一个.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。

谢谢。

4 个答案:

答案 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 = “假”

谢谢 道格拉斯