我创建了一个示例asp.net应用程序,并尝试使用httpwebrequest从我的服务器中抓取数据。但有时我得到了上述错误。我在谷歌上做了一些搜索,但都说你应该在web.config中添加属性“<httpWebRequest useUnsafeHeaderParsing="true" />
”。
这个属性有'UNSAFE'字样,所以我太担心了。我无法添加这个是我的网站配置。还有其他选项来读取我的scrape URL的响应。请让我知道如何没有“<httpWebRequest useUnsafeHeaderParsing="true" />
”
提前致谢, Laxmilal Menaria
答案 0 :(得分:21)
这肯定是服务器问题 - 服务器没有遵循HTTP规范,.NET客户端将此标记为潜在问题。 “不安全”是我认为有点用词不当。这里没有一个很大的安全问题,只是不遵守RFC,这很糟糕,但遗憾的是并不罕见。
因此,正如您在Google中发现的那样,解决问题的方法是应用以下配置更改:
<configuration>
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
</configuration>
答案 1 :(得分:2)
调试此方法(并确保它是导致问题的协议违规)的一种方法是使用Fiddler(Http Web代理)并查看是否发生相同的错误。如果没有(即Fiddler为您处理了问题),那么您应该能够使用UseUnsafeHeaderParsing标志来修复它。
如果您正在寻找以编程方式设置此值的方法,请参阅此处的示例:http://o2platform.wordpress.com/2010/10/20/dealing-with-the-server-committed-a-protocol-violation-sectionresponsestatusline/
答案 2 :(得分:2)
另一种可能性:在执行POST时,服务器以100不正确的方式响应100。
这解决了我的问题:
request.ServicePoint.Expect100Continue = false;
答案 3 :(得分:0)
您可能要检查标题的内容。按照this link的建议尝试添加以下内容:
Accept: text/html, application/xhtml+xml, */*