C# OData 服务器违反协议。Section=ResponseStatusLine

5
我正在使用C#应用程序访问Dynamics 365 Business Central OData API,在本地系统中访问数据很好,但是当我们将应用程序部署到客户服务器时,他们随机(50%)会收到错误消息 "The server committed a protocol violation. Section=ResponseStatusLine"。
我已经查看了文章https://techcommunity.microsoft.com/t5/iis-support-blog/protocol-violation-section-responsestatusline/ba-p/1227792并应用了其中的三个建议,但没有一个起作用
在本地系统中,我可以正常访问客户端Business Central API集成应用程序。
我认为这可能是客户防火墙或负载均衡器的问题,但是找不到解决方案。

你有检查协议版本吗?https://dev59.com/mHE95IYBdhLWcg3wDpcG#35219873 - Dilshod K
@DilshodK 我正在处理Business Central OData API,使用连接服务而不是通过httprequest。 - Magento Nav
我们在使用odata、WebApi.1.0或WebApi 2从PowerApps调用BC19 OnPrem时遇到了相同的问题。 - Addice
1个回答

0

这个问题背后有很多情况,避免问题而不是真正解决它。这个错误最常见的原因之一是请求中的头部损坏或丢失。

解决方案:

  1. 服务器以不正确的方式响应100 continue。将expect 100 continue设置为false,并将套接字空闲时间减少到两秒
HttpRequestObj.ServicePoint.Expect100Continue = false; 
HttpRequestObj.ServicePoint.MaxServicePointIdleTime = 2000; 
  • 忽略损坏/缺失的标头。参考:链接

  • 如果计算机上运行了 Skype,请停止它。

  • 如果 Web 服务器使用 UTF-8 输出字节顺序标记(BOM)。例如,默认常量 Encoding.UTF8 输出 BOM,很容易忘记这一点。网页在 Firefox 和 Chrome 中可以正常工作,但是 HttpWebRequest 将失败。一个快速的解决方法是将 Web 服务器更改为使用不输出 BOM 的 UTF-8 编码。

  • 检查请求服务器的终端点。例如:httpshttp


  • 所有五个点都不适用。我是通过OData连接服务连接Business Central API,而不是通过httprequest发送请求。Skype没有运行,并且Business Central API是HTTPS。在第二个链接中,已经指定了所有选项,但仍然无法工作。 - Magento Nav

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接