获取错误"服务器已提交协议违规。节= responsestatusline"

时间:2015-07-09 22:20:41

标签: httpwebrequest response keep-alive http-status-code-304

我在调用api时遇到此协议违规错误。发生了什么是我的Windows服务正在循环中进行连续的api调用,只要它返回响应代码" OK",那么一切都很好,但是如果它返回除了" OK"下一次调用因协议违规错误而失败。我已经测试过强制api始终返回" OK"我的循环成功完成。我感到困惑的是,为什么下一次通话取决于前一次通话的结果?这是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个主要修正:

  1. 添加&#34; httpWebRequest useUnsafeHeaderParsing =&#34; true&#34;到您的配置文件
  2. 将Expect100Continue设为false
  3. 将KeepAlive设为false
  4. 所有这些似乎都与httpWebRequest有关,我正在使用httpRequestMessage。这是使用httpWebRequest的原因还是httpRequestMessage中的等价物?我曾尝试对这些属性和设置进行一些研究,但我不确定我是否明白他们应该做什么,而且我不想设置一些不应该做的事情。为我的情况设置只是为了尝试修复此错误。是否有理由不使用httpRequestMessage?

    任何人都可以启发我吗?

0 个答案:

没有答案