Получение ошибки "сервер совершил нарушение протокола. Section = responsestatusline"

57
5

Я борюсь с этой ошибкой нарушения протокола при вызове моего api. Что происходит, моя служба Windows выполняет последовательные вызовы api в цикле, и до тех пор, пока она возвращает код ответа "ОК", тогда все в порядке, но если он возвращает НИЧЕГО, кроме "ОК", следующий вызов завершается с ошибкой ошибка нарушения протокола. Я тестировал принуждение api всегда возвращать "ОК", и мой цикл завершается успешно. Что меня смущает, почему следующий вызов зависит от результата предыдущего вызова? Это api, который отвергает его или просто не отправляет?

Мой код выглядит следующим образом:

//------------------------------------------------
// For each Transaction, process all detail rows
//------------------------------------------------
foreach (IGrouping<int, SalesTransactionDTO> transactionHeader in transactionHeaderGroup)
{
//Send Request
using (HttpRequestMessage request = new HttpRequestMessage())
{
request.RequestUri = new Uri(myAPiUrl);
request.Method = HttpMethod.Post;
request.Content = new StringContent(jsonContent);
request.Content.Headers.ContentType = new MediaTypeWithQualityHeaderValue("application/json");
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Token", accessToken);
HttpResponseMessage response = client.SendAsync(request).Result;

//Check response
if (response.StatusCode != HttpStatusCode.OK)
//log failure;
}
}

Я прочитал много сообщений SO, и я получаю те же 3 основных исправления:

добавить "httpWebRequest useUnsafeHeaderParsing =" true "в ваш файл конфигурации установить Expect100Continue на false установите KeepAlive на false

Все они, похоже, относятся к httpWebRequest, в котором я использую httpRequestMessage. Это причина использовать httpWebRequest или есть эквивалент в httpRequestMessage? Я попытался провести некоторое исследование этих свойств и настроек, но я не уверен, что понимаю, что они предназначены, и я не хочу устанавливать что-то, что не должно быть установлено для моей ситуации, попытайтесь исправить эту ошибку. Есть ли причина, по которой это не будет работать с httpRequestMessage?

Кто-нибудь может просветить меня?

спросил(а) 2015-07-10T01:20:00+03:00 5 лет, 2 месяца назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема