服务器违反了协议。部分=响应状态行。

3

请帮帮我,我已经花了好几个小时在研究这个问题上,尝试了很多不同的解决方法,但是我还是完全不知道为什么我仍然会收到这个错误。

我有一个包含以下代码的 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();

我已经尝试了所有可能的组合,将上面三行注释去掉。

在我的web.config文件中有以下内容:

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

当我在我的开发机上运行Fiddler时,页面可以正常运行,Fiddler在返回顶部显示以下消息:“HTTP/1.0 200 This buggy server did not return headers”。
没有运行Fiddler时,每次在request.GetResponse()行上都会出现错误。
2个回答

6

我尝试了在StackOverflow和其他网站上找到的所有建议,但是HttpWebRequest的实现从未为我工作,因此在阅读此文后我尝试使用TcpClient代替: 如何为.NET Compact Framework设置useUnsafeHeaderParsing

为了让它对我起作用,我必须修改这一行:

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

to:

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

这样做是可行的。


1
哇哦!你用 Environment.NewLine 为我省了很多工作,谢谢你! - Alex S

0
在asp.net中,此问题仅与端口相关。
很多程序使用80端口,所以您会遇到这个错误,要解决此问题,无需进行任何配置,只需关闭您的Skype、VPN软件等等,问题就会解决。
在我的情况下,实际上并不是Skype,而是一个名为Hotspot Shield(一个免费的VPN)的软件在后台运行,退出该软件解决了我的问题。

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