解決 C# .NET WebClient WebRequest請求緩慢的問題


【編程環境】Visual Studio 2010, NET4.0

【開發語言】C#, 理論上VB.NET等依賴.NET Framework框架的語言均受此影響

【問題描述】

使用HttpWebRequest抓取網頁內容,但首次請求總是莫名奇妙的阻塞在Request.GetResponse();上,不過一旦這次請求成功,后續的操作就很快了(如果是針對同一對象)。

相同的代碼編譯在NET3.5環境中卻一切正常,而在NET4.0環境中執行就出這問題,難道是一個BUG?

【解決方案】

在配置文件中(.config)中添加配置節:

 

[html]  view plain copy print ?
 
  1. <?xml version="1.0"?>  
  2. <configuration>  
  3.   <startup>  
  4.     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>  
  5.   </startup>  
  6.   <system.net>  
  7.     <defaultProxy  
  8.         enabled="false"  
  9.         useDefaultCredentials="false" >  
  10.       <proxy/>  
  11.       <bypasslist/>  
  12.       <module/>  
  13.     </defaultProxy>  
  14.   </system.net>  
  15. </configuration>  


【問題所在】 

 

.NET4.0中的默認代理是開啟的,而我並沒有設置!故只有等待超時后才會繞過代理,這就阻塞了.

【參考資料】

"It's not set at all in app.cong or machine.config. Hmm. If I'm reading the 
MSDN docs right, the default for defaultProxy.enabled is TRUE if the element 
isn't specified at all. That would be consistent with my observations.
"

http://msdn2.microsoft.com/en-us/library/kd3cf2ex(VS.80).aspx

【問題引申】

如果在其它版本的.NET環境中遇到類似問題,不妨嘗試WebClient.Proxy = null;或HttpWebRequest.Proxy = null.

【總結】

問題往往出於不注意,我們要多加'小心'.

希望能幫到您!

 

 

轉載於:http://blog.csdn.net/rrrfff/article/details/6170653


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM