首页 新闻 会员 周边 捐助

C# WebRequest出错:"服务器提交了协议冲突"

0
悬赏园豆:30 [已解决问题] 解决于 2017-06-12 17:55

触发这个问题的C#代码如下:

var webReqeust = WebRequest.Create(ApiUrl);
webReqeust.Method = "DELETE";
using (var response = webReqeust.GetResponse()) { } 

错误信息:

System.Net.WebException: 服务器提交了协议冲突. Section=ResponseStatusLine
   在 System.Net.HttpWebRequest.GetResponse()

英文错误信息:

The server committed a protocol violation. Section=ResponseStatusLine
  + System.Net.HttpWebRequest.GetResponse()

请问如何解决?

C#
dudu的主页 dudu | 高人七级 | 园豆:29333
提问于:2017-06-12 15:14
< >
分享
最佳答案
1
webRequest.KeepAlive = false;//设置一下看看
收获园豆:30
MrNice | 老鸟四级 |园豆:3468 | 2017-06-12 15:34

KeepAlive设置为false的确可以了

var webReqeust = WebRequest.Create(ApiUrl) as HttpWebRequest;
webReqeust.Method = "DELETE";
webReqeust.KeepAlive = false;
using (var response = webReqeust.GetResponse()) { } 
dudu | 园豆:29333 (高人七级) | 2017-06-12 17:55

@dudu: 请问是为什么这么设置就好了?

shixudong | 园豆:204 (菜鸟二级) | 2018-01-17 15:48

请问是为什么这么设置就好了?

shixudong | 园豆:204 (菜鸟二级) | 2018-01-17 15:48

@shixudong: 我猜测,设置keepalive为false,请求时就不会发Connection: Keep-Alive请求头,这符合http/1.1的规范。设为true,多发了这个请求头不符合http/1.1的规范,如果服务端用的是http/1.0就没这个问题。

dudu | 园豆:29333 (高人七级) | 2018-01-17 16:55

非常有效!

forNow | 园豆:200 (初学一级) | 2021-08-24 07:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册