我已經看到其他一些線程但尚未找到解決方案。當從調試模式運行C#Windows From時,我可以使用WebClient從網頁讀取數據。但是,一旦爲應用程序創建可執行文件,我無法從網頁讀取數據。這裏我得到的例外:System.Net.WebException:底層連接已關閉:現有連接被遠程主機強制關閉
System.Net.WebException:底層連接已關閉:發送時發生意外錯誤。 ---> System.IO.IOException:無法從傳輸連接讀取數據:現有連接被遠程主機強制關閉。 ---> System.Net.Sockets.SocketException:現有連接被遠程主機 強制關閉在System.Net.Sockets.Socket.Receive(Byte []緩衝區,Int32偏移量,Int32大小,SocketFlags socketFlags) 在System.Net.Sockets.NetworkStream.Read(字節[]緩衝液,的Int32偏移的Int32大小)
---內部異常堆棧跟蹤的結尾---
下面是代碼我的一個片段正在使用:
WebClient webClient = new WebClient();
webClient.UseDefaultCredentials = true;
webClient.Proxy.Credentials = CredentialCache.DefaultCredentials;
webClient.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
string page = webClient.DownloadString(webPath + manPartNum);
就像我以前說的,我能夠得到這個在調試中正確工作模式的視覺工作室,但只要我創建可執行文件,我不能再從網頁上讀取。任何幫助,將不勝感激。什麼可能導致這個問題?
有幾種可能性。 1)由於編譯器的依賴性問題,所有更改都沒有進入可執行文件。所以你可以刪除完全重建項目的bin文件夾,這樣發佈模式就會重建2)代碼第一次運行。但是第二次建立了一個cookie,並且運行有cookie的代碼有問題。所以你可以打開一個IE瀏覽器並刪除包括cookie的歷史記錄,然後重試。或返回到調試版本並查看它是否仍然有效.3)您的舊連接未關閉,並且服務器不允許來自同一IP地址的多個連接。 – jdweng
'UseDefaultCredentials'和您提供的當前用戶憑證是否有衝突?當你在調試中「成功」時,我會在輸出窗口中查看它,以確保它不會在那裏拋出,但讓你無論如何都能擺脫它。 – DonBoitnott
感謝您的快速響應。我嘗試了你的建議。 1)我刪除了bin文件夾並完全重建了該項目。沒有成功。 2)我在調試模式下重新運行程序,在調試模式下它仍能正常工作。 3)有沒有辦法讓我關閉webclient? weblient.Close()? –