服务器提交了协议违规.第= ResponseStatusLine

Mar*_*vin 3 asp.net web-config httpwebrequest httpwebresponse

请有人帮助我.我已经研究了几个小时,已经尝试了很多不同的建议修复,我完全失去了为什么我仍然得到这个错误.

我有一个ASP.NET 4.0网页,其中包含以下代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetHref);
// request.KeepAlive = false;
// request.ProtocolVersion = System.Net.HttpVersion.Version10;
// request.ServicePoint.Expect100Continue = false;

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我可以想象的所有组合,不评论上述3条注释行.

我在web.config中有这个:

<system.net>
   <settings>
      <httpWebRequest useUnsafeHeaderParsing ="true"/>
   </settings>
</system.net>
Run Code Online (Sandbox Code Playgroud)

当我在我的开发机器上运行Fiddler时,页面运行无例外,fiddler在返回的顶部显示此消息:

HTTP/1.0 200这个错误的服务器没有返回标头

如果没有Fiddler运行,我每次都会收到错误request.GetResponse().

Mar*_*vin 6

好吧,我尝试了我在StackOverflow和网络上的其他地方找到的所有建议,但从来没有得到HttpWebRequest的实现为我工作,所以我尝试使用TcpClient后阅读: 如何为.NET Compact Framework设置useUnsafeHeaderParsing

为了让它适合我,我不得不修改这一行:

 sw.WriteLine(string.Format("GET /{0} HTTP/1.1", pathAndQueryString));
Run Code Online (Sandbox Code Playgroud)

至:

 sw.WriteLine(string.Format("GET /{0} {1}", pathAndQueryString, Environment.NewLine+Environment.NewLine));
Run Code Online (Sandbox Code Playgroud)

这很有效.