Исключение веб-запроса C #: основное соединение было закрыто: при получении произошла непредвиденная ошибка - PullRequest
2 голосов
/ 03 августа 2011

Обычно этот код работает совершенно нормально, но у меня есть один экземпляр на клиентском ПК, который выдает это исключение.Мы не можем копировать вообще.Как и в теме, я получаю исключение: «Базовое соединение было закрыто: при получении произошла непредвиденная ошибка».Я чертовски разобрался с этим, но все, что я смог найти, это установить KeepAlive в false, что я уже сделал.Обычно это SSL-соединение, но у меня была попытка клиента использовать такое же соединение по стандартному http, и мы получили те же результаты.

Обычно это очень быстрый веб-запрос, в классе userinfo около 10 строкэлементы, и ответ в строке около 100 символов после крошечного запроса MySQL.Так что я не думаю, что это тайм-аут.

Есть идеи?

public static string HitServer(string url)
        {

            if (UserInfo.Instance == null) return "";
            //Request update XML path
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.KeepAlive = false;
            req.Method = "POST";
            req.ContentType = "xml/text";
            using (Stream reqStream = req.GetRequestStream())
            {
                XmlSerializer s = new XmlSerializer(typeof(UserInfo));
                s.Serialize(reqStream, UserInfo.Instance);
            }

            WebResponse response = req.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader sr = new StreamReader(responseStream);
            return sr.ReadToEnd();
        }

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

После попытки всех видов исправлений, таких как изменения протокола HTTP, Expect100contine, keepalive и несколько других параметров запроса, мне пришлось переключиться на не-SSL и просто зашифровать пароль через это соединение.самое идеальное решение, но это должно было быть сделано.Кажется, что-то на некоторых компьютерах блокирует SSL-соединения от нашего приложения.Это было проверено с помощью представления браузера, встроенного в наше программное обеспечение, чтобы попытаться загрузить изображение на защищенный сервер - это не удалось.

0 голосов
/ 03 августа 2011

Когда я получаю сообщение «Базовое соединение было закрыто: при получении произошла непредвиденная ошибка», это обычно вызвано ошибками сериализации и / или десериализации. Я полагаю, что проблема возникает при десериализации ответа на клиенте, если на сервере не зарегистрированы ошибки.

Как насчет регистрации модуля, чтобы перехватывать все ошибки на клиенте и проверять наличие ошибок?

...