«Сервер совершил нарушение протокола. Section = ResponseStatusLine» - запрос не отправляется - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь сделать довольно простой POST запрос к .NET WebAPI.Запрос выполняется из функции Azure, в случае, если это имеет значение.

Вот код:

public async Task SetBackupRecordAsync(BackupRecord backupRecord)
{
    var content = new StringContent(JsonConvert.SerializeObject(backupRecord),
                                    Encoding.UTF8,
                                    "application/json");

    var uri = new Uri(_httpClient.BaseAddress, "backup");

    HttpResponseMessage result = null;
    try
    {
        result = await _httpClient.PostAsync(uri, content).ConfigureAwait(false);

        if (result.StatusCode == HttpStatusCode.Accepted)
        {
            return;
        }

        throw new Exception($"Unexpected response: The API responded with {(int) result.StatusCode} ({result.StatusCode}) when setting the backup record.");
    }
    catch (Exception exception)
    {
        // ...
    }
}

И это содержимое JSON, которое включается:

{"AddedById": 14000, "AddedOnUtc": "2019-06-17T09: 43: 25.9821306Z", "Backup": false, "DeletedById": null, "DeletedOnUtc": null, "Id":" 4c3ef086-3e2a-4964-bdc1-f5e72f525fbd "," LastBackupUtc ": null," Name ":" something "}

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

В отличие от других вопросов по тому же сообщению об исключении, этот запрос даже не отправляется - как только вызывается _httpClient.PostAsync, генерируется исключение:

Произошла ошибка при отправке запроса.

Внутреннее исключение говорит

Сервер совершил нарушение протокола.Section = ResponseStatusLine

И трассировка внутреннего стека довольно короткая:

at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
   at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)

Некоторые дополнительные точки:

  • Я вижу из Fiddler, что нетзапрос передается по сети, поэтому должно быть - как говорит исключение верхнего уровня - что-то о самом запросе, который препятствует его отправке.
  • Если я пытаюсь использовать тот же метод API от Почтальона, используя точно такой же контент JSON, тогда он работает.
  • Я смог успешно выполнить GET запросов к тому же API из той же функции Azure.

Так что жене так с этим запросом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...