【问题标题】:The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF服务器违反了协议。 Section=ResponseHeader Detail=CR 后面必须跟 LF
【发布时间】:2017-09-27 12:37:25
【问题描述】:

我的 App.config 文件

<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
  <system.net>
    <settings>
      <httpWebRequest useUnsafeHeaderParsing="true" />
    </settings>
  </system.net>
</configuration>

当我尝试从 url 下载一些 .pdf 文件时,我遇到了以下错误。

服务器违反了协议。部分=响应头 Detail=CR后面必须跟LF

经过大量研究,大多数建议是在配置​​文件中添加useUnsafeHeaderParsing="true",但不幸的是它已经存在于我的配置文件中。

但我意识到,建议解决方案中的所有示例都没有这一行

<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>

所以我继续删除并尝试下载.pdf文件

<?xml version="1.0"?>
<configuration>
  <system.net>
    <settings>
      <httpWebRequest useUnsafeHeaderParsing="true" />
    </settings>
  </system.net>
</configuration>

起作用了。我的应用程序是使用 .Net Framework 4

构建的

我想了解的是删除这条线是否有任何影响,或者它可以以其他方式修复?

【问题讨论】:

  • 如果同时删除它们会怎样?

标签: c# .net app-config .net-framework-version


【解决方案1】:

根据我的经验,删除线不会“破坏”任何东西。该行仅在您的应用程序中直接针对 .NET Framework 4.0。

https://www.codeproject.com/Articles/886256/NET-versioning-and-multi-targeting-on-Csharp-appli

这是我去年 12 月在转换我的一些项目并从文件中清除一些“无用”代码时遇到的一个很好且冗长的代码项目文件

【讨论】:

  • 感谢您的确认,将通过链接。您知道为什么该行导致错误或者我必须使用不同的属性吗?
  • 你可以试试这个可能是因为你的 Content-Type 标头中有 \r\n 。字符集应该是 Content-Type 标题行的一部分。此外,如果绝对需要使用多行(在这种情况下不是),您可以将空间移动到正确的位置: char *message = "HTTP/1.1 200 OK\r\nContent-Type: text/xml;\r \n charset=utf-8\r\n\r\n"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2013-01-29
  • 2011-01-29
  • 1970-01-01
相关资源
最近更新 更多