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

时间:2012-09-05 20:20:19

标签: 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();

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

我在web.config中有这个:

<system.net>
   <settings>
      <httpWebRequest useUnsafeHeaderParsing ="true"/>
   </settings>
</system.net>

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

  

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

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

2 个答案:

答案 0 :(得分:6)

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

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

 sw.WriteLine(string.Format("GET /{0} HTTP/1.1", pathAndQueryString));

为:

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

这很有效。

答案 1 :(得分:0)

在使用C#的asp.net中,此问题仅与端口相关联。

许多程序使用80端口就是为什么会出现这个错误,所以摆脱这个问题只需关闭你的

就不需要配置了

Skype,VPN软件等..它将解决您的问题。

在我的情况下实际上它不是Skype而是热点盾(一个免费的VPN)软件在后台退出运行,软件解决了我的问题。