2011-03-03 118 views
2

這是一種奇怪的問題。我現在一直在使用HttpWebRequest很長一段時間。但之前從未遇到過這個問題。我報廢的網站規模巨大,每頁至少3mb。C#HttpWebRequest問題

在xp它沒有給出錯誤,但 報廢不完整頁面。

在Win7或2008服務器它顯示該錯誤

「無法讀取來自 傳輸連接的數據:一個現有 連接被強制由 遠程主機關閉」

。任何幫助將非常感激。

+0

我相信可以禁用從網站加載圖像,這應該大大減小尺寸(如果你不需要圖像) – Pieter888 2011-03-03 15:56:23

+0

@ Pieter888 - 「HttpWebRequest」只會得到標記,而不是任何鏈接的資源(即沒有JS,CSS或圖像文件)。 – Oded 2011-03-03 15:57:37

+0

@ Pieter888:我只下載HTML頁面,沒有任何其他鏈接進入頁面[即。圖片/動畫]。 – Barun 2011-03-03 15:58:24

回答

0

花了5天后​​,我得出這個結論,這是一個大的錯誤.net 而atlast我使用WebBrowser組件解決了這個問題。雖然我不喜歡它,因爲它不在主線程之外工作。但它確實很快,並且像冠軍一樣將這些頁面廢棄。

+0

你能解釋一下嗎。我有同樣的問題 – 2014-06-24 15:55:08

1

這可能是服務於篩選HTTP GET請求的頁面的ISP的問題。

嘗試添加以下ACCEPT標頭:

webRequest.Accept = "*/*"; 
+0

是的,我已經做到了。但仍然有這個問題。 – Barun 2011-03-03 16:09:45

0

的網絡服務器或一個人在這方面的中間人例如一個代理正在破壞你的連接。我認爲這個請求在瀏覽器中正常工作。我會做一些事情:

  1. 這是很多數據 - 確保您的超時(超時和ReadWriteTimeout)設置適當高。
  2. 使這個請求看起來像它來自一個真正的瀏覽器 - 使用像Fiddler或Netmon這樣的工具從瀏覽器中提取和複製標題,併發出相同的請求 - UserAgent,Accepts,Content-Encoding等。看到很多站點嘔吐當標準頭文件丟失時。
  3. Cookie可能很重要(有些網站使用它來進行基本的DDoS預防) - 再次使用Fiddler觀察真正的瀏覽器交互。

Fiddler

NetMon

讓我們知道你是怎麼得到的。

+0

已經做了所有這些事情。我認爲這是HttpWebRequest類的問題。可能是這是一個錯誤。 – Barun 2011-03-03 16:50:37