HttpWebRequest / HttpWebResponse запускает два вызова на сервер - PullRequest
0 голосов
/ 19 августа 2011

Ниже приведен фрагмент кода, который я использую для отправки данных на сервер на основе REST.Если я начинаю отладку на сервере, я вижу два отдельных запроса.Я хочу знать, почему?

Мой запрос не выполняется из-за второго вызова.Если я отлаживаю, он показывает, что первый запрос проходит нормально, но когда я пытаюсь прочитать ответ на стороне клиента, он отправляет новый вызов серверу, и тот не проходит аутентификацию.2 звонка на сервер срабатывают ...

        string requestUri = "/Service/Contacts";

        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(SERVICEBASEURI + requestUri);
        httpWebRequest.Headers.Add(AUTHENTICATE, m_AuthenticationKey);
        httpWebRequest.Headers.Add(UTCTIMESTAMP, m_UtcTime.ToString("yyyy'-'MM'-'dd HH':'mm':'ss'Z'"));
        httpWebRequest.Headers.Add(NONCE, m_NonceValue);
        httpWebRequest.Accept = "*/*";
        httpWebRequest.UserAgent = "Test-Framework";

        httpWebRequest.Method = "POST";

        string postData = "instance={\"FullName\":\"Altonymous\"}";
        byte[] postDataBytes = new ASCIIEncoding().GetBytes(postData);

        // TODO: Add postData to the Payload.  Needs to be done on authorization side as well.
        string requestPayload = GetPayload(requestUri);
        httpWebRequest.Headers.Add(AUTHORIZATION, requestPayload);
        httpWebRequest.ContentType = "application/x-www-form-urlencoded";
        httpWebRequest.ContentLength = postDataBytes.Length;

        Stream stream = httpWebRequest.GetRequestStream();
        // First call fires off to the server.  I didn't expect it to happen here...
        stream.Write(postDataBytes, 0, postDataBytes.Length);
        stream.Close();

        // Second call fires off to the server.  This is where I expected it to happen.
        using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())
        {
            Assert.AreEqual(HttpStatusCode.OK, httpWebResponse.StatusCode);

            Stream responseStream = httpWebResponse.GetResponseStream();
            StreamReader responseStreamReader = new StreamReader(responseStream);
            string resultString = responseStreamReader.ReadToEnd();
            Assert.IsNotNullOrEmpty(resultString);
        }

Ответы [ 2 ]

1 голос
/ 19 августа 2011

попробуйте это ~

httpWebRequest.ServicePoint.ConnectionLimit = 10;
0 голосов
/ 18 сентября 2011

Похоже, что это ошибка в дизайне тестирования Microsoft.

...