C# Winform/Server 提交协议冲突 Section=ResponseStatusLine 的解决,可能是服务器引起的异常

本文记录了将HTTP异步操作改为同步后出现的异常及其解决过程。异常原因是服务器响应不符合RFC822规定,最终通过调整服务器端响应头解决了问题。

把Http异步的操作改为同步操作后出现该异常,网上搜了一下,

原因:微软没有容忍不符合RFC 822中的httpHeader必须以CRLF结束的规定的服务器响应所导致

对于原因我是不明觉厉。结果问题恰恰是出现在服务器上,服务器解决方法见最后。

尝试的解决方法:

0.几个人都说要改webclient等来提交请求,没有改的想法

1.有人说把客户端的KeepLive = false 立竿见影 尝试无效,

2.看到这个帖子 http://hi.baidu.com/westfruit/item/79d46811c2bd58463b176e21

新建个App.Conifg

新建方法:鼠标右键点击项目名称,添加–新建项,在弹出的对话框中选择”应用程序配置文件”,文件名称采用默认名称即可。

网上那种直接添加xml配置文件做法不可行。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <settings>
      <httpWebRequest useUnsafeHeaderParsing= "true " />
    </settings>
  </system.net>
</configuration>


无效  =   =  ~

3.度娘靠不住,我去了下谷歌,大同小异,大概得出的方法是以下

             _request.KeepAlive = false;
             _request.ContentType = "application/JSON";
             _request.Referer =""; 
             _request.UserAgent = "";
             _request.CookieContainer = new CookieContainer();


均无效啊 = = 。。。

 结果 到最后, 发现是我服务器端出现的问题。。。。。服务器端在写入数据流之前,写入以下代码

            OutputStream.WriteLine("HTTP/1.0 200 OK");
            OutputStream.WriteLine("Content-Type: text/html");
            OutputStream.WriteLine("Connection: close");
            OutputStream.WriteLine("");

 原来问题是出现在服务器上。。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值