HttpWebRequest не удается подключиться каждый раз, если я не перезагружаю компьютер

У меня есть приложение WPF C#, которое необходимо подключить к удаленному серверу SAP. Я запускаю приложение на двух компьютерах (в одной сети) и знаю, что сервер доступен.

Сначала компьютер A может нормально подключиться с помощью веб-запроса (после нескольких попыток все они работают нормально). Случайным образом (кажется, я не могу продублировать) все веб-запросы завершатся с сообщением "Невозможно подключиться к удаленному серверу" (тип 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: Итак, я прокомментировал все звонки в Close и сделал пару десятков запросов. Я также удалил код, который получает ответ, и сделал еще несколько запросов. Во время этих тестов я не получил никаких исключений, и все работало правильно

Помимо этих результатов, я могу понять, что что-то подобное может сломать мою программу, но я не понимаю, почему она все равно будет повреждена после перезапуска программы или попытки связаться с другим удаленным сервером. Похоже, что в.NET Framework что-то запуталось, что само по себе не разрешается, пока я не перезапущу всю машину.

1 ответ

Решение

ОП здесь,

Журналы Wireshark ничего не показывали при попытке подключения, поэтому я предположил, что какая-то другая программа полностью блокировала мой EXE от доступа к сети.

Оказалось, что Bitdefender блокирует его. Я удалил это, и все начало работать. Я не знаю, почему он решил его заблокировать, но это ответ.

Другие вопросы по тегам