2009-09-02 163 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客戶端修復了問題。

希望這可以幫助別人!