Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 除非重新启动计算机,否则HttpWebRequest每次都无法连接_C#_.net_Httpwebrequest_System.net.webexception - Fatal编程技术网

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

C# 除非重新启动计算机,否则HttpWebRequest每次都无法连接,c#,.net,httpwebrequest,system.net.webexception,C#,.net,Httpwebrequest,System.net.webexception,我有一个WPF C#应用程序需要连接到远程SAP服务器。我在两台计算机(同一网络)上运行应用程序,我知道服务器是可访问的 首先,计算机A可以使用web请求进行良好连接(经过多次尝试后,它们都可以正常工作)。随机地(似乎;我无法复制),所有web请求都将失败,并显示消息“无法连接到远程服务器”(键入System.Net.WebException)。在浏览器中导航到URL会很好地加载;只有应用程序无法连接。引发异常的方法是HttpWebRequest.GetRequestStream 即使多次重新启

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

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

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

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

下面是一些代码:

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();
编辑2: 所以我评论了所有要结束的电话,并提出了几十个请求。我还删除了获取响应的代码,并提出了多个请求。在这些测试中,我没有收到任何异常,一切正常

撇开这些结果不谈,我可以理解这样的事情可能会破坏我的程序,但我不明白为什么在重新启动程序或尝试联系其他远程服务器后它仍然会被破坏。 在.NET framework中,似乎有什么东西乱七八糟,除非我重新启动整个机器,否则无法自行解决。

OP Here

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


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

你有没有试过用Wireshark查看网络级别的情况?@JonSkeet哇,是的,我很后悔在问题发生时没有看到。如果它再次发生,那是我要检查的第一件事。@FUR10N。。。你真的在读答案吗?我认为如果你还没有。。。您可能会留下一堆未完成的请求。@spender抱歉,忽略了这一部分。但我不认为这与此有关,因为当它开始失败时,它开始无法连接到我尝试的任何地址。如果不处理响应或响应流,则此错误非常常见。您必须非常小心地始终这样做,即使是在例外情况下。不需要很多泄漏的
HttpWebResponse
或响应流对象就可以使程序停止工作。