“服务器违反了协议。Section = ResponseStatusLine”-没有发送请求

时间:2019-06-17 10:18:50

标签: c# asp.net-web-api dotnet-httpclient

我正在尝试向.NET WebAPI发出相当简单的POST请求。该请求是通过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值,这没有区别。

与同一异常消息上的其他问题不同,此请求甚至都不会发送-称为_httpClient.PostAsync时,会引发异常:

  

发送请求时出错。

内部异常提示

  

服务器犯了协议冲突。 Section = ResponseStatusLine

内部堆栈跟踪非常短:

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

一些其他要点:

  • 我从Fiddler可以看到,没有任何请求被发送到网络上,因此,正如顶级异常所说,必须存在一些有关请求本身的信息,从而阻止了该请求的发送。
  • 如果我尝试使用完全相同的JSON内容使用Postman的相同API方法,那么它将起作用。
  • 我能够从同一Azure函数成功向同一API发出GET请求。

那么这个请求怎么了?

0 个答案:

没有答案