HttpWebRequest 的一辈子都没有见过问题?

qzoning 2008-07-10 02:08:27
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

WebResponse response = request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, encode);
string HtmlCode = sr.ReadToEnd();
resStream.Close();
sr.Close();

测试这个
link="http://searchui.search.mainone.com/cb-100-20-0-20-1.htm?cat_id=1000199"的时候,
发生 服务器提交了协议冲突. Section=ResponseHeader Detail=标头名称无效

测试其他的link 就没有问题
...全文
401 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouhwu 2009-06-09
  • 打赏
  • 举报
回复
估计你的IE设置了代理!在代码中加入 限制访问时候使用代理
listRequest.Proxy = null;
zhouhwu 2009-06-09
  • 打赏
  • 举报
回复
估计你的IE设置了代理!在代码中加入 限制访问时候使用代理
listRequest.Proxy = null;
qinhl99 2008-12-04
  • 打赏
  • 举报
回复
实际上也相对HttpWebRequestsocket也相对HttpWebRequestsocket更加灵活和稳定
qinhl99 2008-12-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 shangxin200093 的回复:]
9楼你提供的地址我看过了,不过我想你的解决办法也是避免问题吧,和2楼是一样的,终究是没有提出一个解决方案。
[/Quote]

//关键是,咱们现在没有找到,也没有时间去找到一个彻底的解决办法,所以的解决办法正如2楼所说,那这样其实是牺牲了安全性啊,所以我们可以增加一点工作量,用socket来实现,避免这一问题,也是一种思路吧!哈哈
shangxin200093 2008-12-04
  • 打赏
  • 举报
回复
9楼你提供的地址我看过了,不过我想你的解决办法也是避免问题吧,和2楼是一样的,终究是没有提出一个解决方案。
qinhl99 2008-12-04
  • 打赏
  • 举报
回复
2楼的好象解决问题,但据说这样会使得"网址解析攻击"变得更容易!
目前来看,用socket来代替HttpWebRequest可以很好的避免这一问题.
http://blogs.msdn.com/mflasko/archive/2005/11/02/488370.aspx
shangxin200093 2008-12-04
  • 打赏
  • 举报
回复
仔细看了看LZ的问题,发现虽然异常结果是一样的,但是我是调用WEB SERVERS出现的这个问题。

所以我就在想,是不是说当结果输出的时候被抛出异常?
tly8386208 2008-12-04
  • 打赏
  • 举报
回复
???
qinhl99 2008-12-04
  • 打赏
  • 举报
回复
mark下
shangxin200093 2008-12-04
  • 打赏
  • 举报
回复
我也碰到了这个问题,还在百度上找结果,无意中发现这个帖子,二楼的办法我试过,可以解决这个问题,但是被调用的WEBSERVERS有的功能却不在正常了,可用肯定不是代码的问题。所以现在我也还在继续找答案。留个脚印,如果我解决了我再回来回答你的问题。另外多说一句,LZ说的问题和二楼的回复的答案并不是一个问题根源。
diffmaker 2008-12-04
  • 打赏
  • 举报
回复
mark
danjiewu 2008-12-04
  • 打赏
  • 举报
回复
我测试了下怎么没出现异常?
libao1983 2008-12-04
  • 打赏
  • 举报
回复
学习,呵呵
shangxin200093 2008-12-04
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 qinhl99 的回复:]
实际上也相对HttpWebRequestsocket也相对HttpWebRequestsocket更加灵活和稳定
[/Quote]

对于LZ的问题,你提出的这个方法我也同意是个避免的方式,不过,我想会不会是对于返回的部分有问题,比如,他返回的内容中的头部分是不是含有其他的信息,但是这个信息并不是IIS能正常解析的,或者是IIS认为是错误的内容。所以才会有这个异常。
sxmonsy 2008-07-10
  • 打赏
  • 举报
回复
挺有难度的
ericzhangbo1982111 2008-07-10
  • 打赏
  • 举报
回复
很难吗?
ericzhangbo1982111 2008-07-10
  • 打赏
  • 举报
回复
服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF

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

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

解决方案是在app.config或web.config文件里加入
<configuration>
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
</configuration><?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
</configuration>
允许系统容忍(tolerant)只以CR或LF结尾的hearder信息
qzoning 2008-07-10
  • 打赏
  • 举报
回复
这个问题困扰很多高手,了

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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