Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Ошибка при работе с сетью


Автор: Brodyaga 14.8.2008, 20:35
Всем доброго времени суток! Имеется такая проблема... Отправляю HTTP-запрос на сайт, затем получаю с него ответ, после этого отправляю второй запрос и получаю второй ответ. Если всё это запускать в обычном режиме, всё ок, а в режиме отладки, в месте где данные второго запроса пересылаются на сайт, выскакивает исключение типа мой хост компьютер принудительно разорвал соединение...  в чём деол помогите....
Вот код метода в котором вылетает эксепшен (До этого все настройки req выполнены верно, этот метод лишь отправляет запрос на страницу):

Код

        private HttpWebRequest req;
        private HttpWebResponse rsp;

        public HttpWebResponse SendRequest()
        {
            Stream st = null;
            rsp = null;
            rspText = null;

            // Create the request payload
            byte[] data = null;

            if (req.Method == "GET")
                data = new byte[0];

            if (req.Method == "POST" && mimePayload == null)
                data = Encoding.Default.GetBytes(postVars);

            if (req.Method == "POST" && mimePayload != null)
            {
                mimePayload.Finish();
                data = mimePayload.Data;
            }

            // Send the request payload if there is one (not applicable for GET requests)
            if (data.Length > 0)
            {
                try
                {
                    req.ContentLength = data.Length;
                    st = req.GetRequestStream();
                    st.Write(data, 0, data.Length);                    //Здесь вылетает эксепшн когда отправляем второй запрос
                }
                catch (WebException ex)
                {
                    throw ex;
                }
                finally
                {
                    if (st != null)
                        st.Close();
                }
            }

            // Try to get the HTTP response
            try
            {
                rsp = (HttpWebResponse)req.GetResponse();
            }
            catch (WebException ex)
            {
                throw ex;
            }

            // Return the response
            return rsp;
        }


Вот скриншот всего этого дела
user posted image

Помогите плиз кто знает в чём дело... 

P.S.
Фаервол отключал, всё тоже самое...

Автор: informatik 19.8.2008, 07:20
Думаю при каждом новом запросе нужно основа создавать экземпляр HttpWebRequest.. 

Автор: Brodyaga 19.8.2008, 07:36
Он у меня и так каждый раз создаётся снова при присвоение URL...
Код

        public string Url
        {
            get
            {
                if (req == null)
                    return null;

                return req.RequestUri.OriginalString;
            }
            set
            {
                req = (HttpWebRequest)WebRequest.Create(value);

                // Don't allow 302 auto-redirects by default
                req.AllowAutoRedirect = false;
            }
        }


Какие ещё есть предположения? :((( А то я уже не знаю чо делать...

Автор: informatik 21.8.2008, 08:48
Простенькие предложения:
1:
Цитата

// Send the request payload if there is one (not applicable for GET requests)

Может второй запрос GET?

2:
URL точно устанавливается при каждом новом запросе?


3: 
Ошибка прячется не в этом коде.....

Автор: Brodyaga 21.8.2008, 12:26
Цитата

1:
Цитата

// Send the request payload if there is one (not applicable for GET requests)

Может второй запрос GET?


Нет второй запрос POST

Цитата

2:
URL точно устанавливается при каждом новом запросе?


Точно

Цитата

3: 
Ошибка прячется не в этом коде.....


Ошибку я нашёл... у req надо было изменить свойство KeepAlive на false. smile

Спасибо за попытки помочь! smile))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)