我已经看到其他一些线程但尚未找到解决方案。当从调试模式运行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()? –