除非我重新启动计算机,否则每次都无法连接HttpWebRequest

时间:2013-03-14 15:47:44

标签: c# .net httpwebrequest system.net.webexception

我有一个需要连接到远程SAP服务器的WPF C#应用程序。我在两台计算机(同一网络)上运行应用程序,我知道服务器是可以访问的。

首先,计算机A可以使用网络请求进行正常连接(经过多次尝试后,它们都能正常工作)。随机(似乎;我无法复制),所有Web请求都将失败并显示消息“无法连接到远程服务器”(类型System.Net.WebException)。导航到浏览器中的URL加载正常;只有应用程序无法连接。抛出异常的方法是HttpWebRequest.GetRequestStream。

即使多次重启应用程序,所有HttpWebRequests仍然无法连接。我们有多个SAP服务器,尝试连接到其中任何一个都会产生相同的结果。同时,计算机B(我的开发机器)上的应用程序仍然可以毫无问题地连接到任何服务器。只有在完全重新启动计算机A后,才能再次连接。

到目前为止,这已发生在两台不同的计算机上。两次,解决问题的唯一方法是重新启动计算机。

以下是一些代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "text/xml; charset=utf-8";
request.ContentLength = contentLength;
request.Headers.Add("Authorization", GetAuthHeader());
request.Timeout = GetTimeout();

Stream post = request.GetRequestStream();//this line throws the exception
//...write to stream...
post.Close();

编辑:忽略了回复部分:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responsedata = response.GetResponseStream();
//...read all response data...
if (responsedata != null)
    responsedata.Close();

EDIT2: 所以我注释掉所有关闭的调用,并提出了几十个请求。我还删除了获取响应的代码并发出了更多请求。在这些测试中,我没有收到任何例外,一切正常。

除了这些结果之外,我可以理解这样的事情可能会破坏我的程序,但我不明白为什么在重新启动程序或尝试联系其他远程服务器之后它仍会被破坏。 除非我重新启动整个机器,否则它会在.NET框架中混乱,而不会自行解决。

1 个答案:

答案 0 :(得分:0)

OP在这里,

Wireshark日志在尝试连接时没有显示任何内容,因此我假设其他一些程序直接阻止了我的EXE从网络访问。

原来是Bitdefender阻止了它。我卸载了,一切都开始工作了。我不知道为什么决定开始阻止它,但这就是答案。