2014-02-11 120 views
1

我有一個小樣本來測試HttpClient。代碼如下。問題在於,大多數時候,請求失敗,超時或主機沒有及時響應。同一個請求始終在瀏覽器中運行。當它發生時,需要很長時間。HttpClient非常緩慢的請求本地主機,甚至失敗

有趣的是,通過瀏覽器訪問相同的網址始終沒有問題。從另一臺機器執行相同的代碼也會同時運行。

當使用HttpClient訪問localhost時,這個問題的原因是什麼? 如何解決?

const string url = "http://localhost:12000/konnect/sync/adverts/status"; 
var handler = new HttpClientHandler(); 
handler.Proxy = null; 
handler.UseProxy = false; 
var client = new HttpClient(handler); 
client.GetStringAsync(url).Result.Dump(); 
+0

當你把它叫做'await client.GetStringAsync(url)''時會發生什麼? –

回答

4

事實證明,這與圖書館沒有任何關係,因爲大多數情況下,通常與本地主機有關的請求都會失敗。當涉及到本地主機時,這可能是系統的問題。無論如何,我禁用了IPv6,但它仍然無法工作。

然而,最有效的是rawcap。我意識到,當我運行rawCap來監視127.0.0.1時,所有的呼叫都成功完成。看起來它確實糾正了這個問題。希望它能幫助那些也與本地主機有同樣問題的人。

+0

我有完全相同的問題(請參閱[這裏](http://stackoverflow.com/questions/27394068/web-request-fails-but-only-for-localhost-and -when-using-system-net-httpwebreque)),事實上rawCap有一點幫助,但它仍然非常慢 - 比從另一個客戶端發出請求慢得多。有什麼想法在幕後發生了什麼? –

0

只是一個想法...打開Windows Lan設置,並取消選中「自動檢測設置」。我最近面臨類似的問題,並通過貶低此設置來解決問題。

+0

是的。我從之前的文章中讀到並嘗試過。一樣。我下載了curl,並且我得到了類似的行爲,所以我開始懷疑它與某些地方的某些混亂配置有關。實際上Curl實際上超時了,我意識到在那些時候請求甚至沒有達到url。 – ritcoder

+0

我明白了。爲了以防萬一,請嘗試使用調試和發佈配置。 – DrinkBird

+0

我使用Linqpad測試應用程序,所以不知道該怎麼做。將嘗試重新啓動,以查看它是否作出differene – ritcoder