Web Services C# OData服务器违反了协议,Section=ResponseStatusLine

1szpjjfi  于 2022-11-15  发布在  C#
关注(0)|答案(1)|浏览(148)

我正在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并应用了所有3个建议,但 * 没有一个起作用 *。
我能够在本地系统中访问客户端Business Central API集成应用程序,没有任何问题。
假设这是客户端防火墙或负载平衡器问题。但无法找到解决方案。

8fsztsew

8fsztsew1#

此问题背后有许多情况,即避免问题而不是实际修复问题。此错误最常见的原因之一是请求中的标头损坏或丢失。

解决方案:

1.服务器以不正确的方式响应100 continue。将expect 100 continue设置为false并将套接字空闲时间减少到两秒

HttpRequestObj.ServicePoint.Expect100Continue = false; 
HttpRequestObj.ServicePoint.MaxServicePointIdleTime = 2000;

1.忽略损坏/丢失的标头。参考:Link
1.如果skype正在机器上运行,请停止它。
1.如果一个web服务器使用UTF-8来输出byte-order-marker(BOM)。例如,默认的常量Encoding.UTF8输出BOM,这很容易忘记。网页在Firefox和Chrome中可以正常工作,但是HttpWebRequest会爆炸。一个快速的解决方法是将web服务器改为使用UTF-8编码,它不输出BOM。
1.检查请求服务器的端点。例如:httpshttp中的一个或多个。

相关问题