出现错误:服务器提交了协议冲突 Section=ResponseStatusLine

steelchen 2007-02-07 10:50:10
下载了一个.Net3.0的软件,在有鉴权的代理服务器后面访问Internet,结果代理认证通过后,提示了这个错误,我在该软件的config文件中加了
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing = "true"/>
</settings>
</system.net>
甚至在.Net 2.0的配置文件machine.config中把这句也加上去了,还是不行,请问是何原因,谢谢!
...全文
8733 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
maole413149 2010-12-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 andot 的回复:]
把客户端的keepAlive选项关掉。
[/Quote]
立竿见影
andot 2010-07-04
  • 打赏
  • 举报
回复
把客户端的keepAlive选项关掉。
yaolixing 2010-07-04
  • 打赏
  • 举报
回复
传递的字串没有编码。
  • 打赏
  • 举报
回复
c.Send(bs, bs.Length, 0);//发送测试信息

     string recvStr = " ";

     byte[] recvBytes = new byte[1024];

     int bytes;

     bytes = c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息

这种写法有潜在问题,如果服务器分多次传数据,就会接收不全,因为是一接收到数据就往下走了.局域网里可能还好说,访问internet上的web服务器就会出问题,不信用这个程序访问一下google看看
lynn511 2010-06-26
  • 打赏
  • 举报
回复
我遇到的问题是:
下载“http://localhost:50994/MyDocuments.asmx”时出错。
服务器提交了协议冲突. Section=ResponseStatusLine
There was an error downloading 'http://localhost:50994/MyDocuments.asmx/$metadata'.
服务器提交了协议冲突.
按楼主的说法添加了在web.config文件里加入

<system.net>

<settings>

<httpWebRequest useUnsafeHeaderParsing= "true " />

</settings>

</system.net>
还是没有效果。
求助!!!!!
yeah920 2007-02-16
  • 打赏
  • 举报
回复
happy up
jxf654 2007-02-16
  • 打赏
  • 举报
回复
up
hcl8260 2007-02-12
  • 打赏
  • 举报
回复
帮顶
zzd8310 2007-02-07
  • 打赏
  • 举报
回复
同意楼上
hertcloud 2007-02-07
  • 打赏
  • 举报
回复
在用HttpWebRequest的时候,发现返回"基础连接已经关闭: 该服务器提交了 HTTP 协议冲突".原来是微软没有容忍不符合RFC 822中的httpHeader中一些字符的问题(如空格),还有必须以CRLF结束的规定的服务器响应。
1。对于诸如空格问题引起的问题,建议不要采用HttpWebRequest类。采用底层的Socket来编写,例子如下:

程序代码


string buffer = "GET /Submit%20CommandId...";
string strAgent = "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)";

buffer = buffer+"User-Agent: "+ strAgent +"\n\n";

try
{

int port = ..;
string host = "..";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和端口转化为IPEndPoint实例

Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

     Console.WriteLine("Conneting...");

      c.Connect(ipe);//连接到服务器

if(c.Connected)
{

     byte[] bs = Encoding.ASCII.GetBytes(buffer);

Console.WriteLine("Send Message:"+buffer);

     c.Send(bs, bs.Length, 0);//发送测试信息

     string recvStr = "";

     byte[] recvBytes = new byte[1024];

     int bytes;

     bytes = c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息

     recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);

     Console.WriteLine("Client Get Message:{0}", recvStr);//显示服务器返回信息

}

     c.Close();

}
catch (ArgumentNullException e)
{
     Console.WriteLine("ArgumentNullException: {0}", e);

}
catch (SocketException e)
{
}

    Console.WriteLine("Press Enter to Exit");


2.必须以CRLF结束的规定的服务器响应
一个解决方案是在application.config或web.config文件里加入

<system.net>

<settings>

<httpWebRequest useUnsafeHeaderParsing="true" />

</settings>

</system.net>

允许系统容忍(tolerant)只以CR或LF结尾的hearder信息
hertcloud 2007-02-07
  • 打赏
  • 举报
回复
服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF

The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF

主体意思是微软没有容忍不符合RFC 822中的httpHeader必须以CRLF结束的规定的服务器响应。

一个解决方案是在application.config或web.config文件里加入

<system.net>

<settings>

<httpWebRequest useUnsafeHeaderParsing="true" />

</settings>

</system.net>

允许系统容忍(tolerant)只以CR或LF结尾的hearder信息

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧