触发这个问题的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()
请问如何解决?
webRequest.KeepAlive = false;//设置一下看看
KeepAlive设置为false的确可以了
var webReqeust = WebRequest.Create(ApiUrl) as HttpWebRequest; webReqeust.Method = "DELETE"; webReqeust.KeepAlive = false; using (var response = webReqeust.GetResponse()) { }
@dudu: 请问是为什么这么设置就好了?
请问是为什么这么设置就好了?
@shixudong: 我猜测,设置keepalive为false,请求时就不会发Connection: Keep-Alive
请求头,这符合http/1.1的规范。设为true,多发了这个请求头不符合http/1.1的规范,如果服务端用的是http/1.0就没这个问题。
非常有效!