你的問題的原因是這樣的,ASP.Net 2.0 增強了安全性,對一些有危害的http 頭進行了判斷,比如url中有空格的情況,以幫助網站提高網絡攻擊的防禦能力。如果你的http頭中有一些ASP.NET 認為是有危害的資訊,則會傳回這個錯誤。你通路百度沒有問題,是因為百度根本就不是asp.net 做的。
這個問題的解決辦法是在你的 web.config 中添加如下配置:
<configuration>
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
</configuration>
Service xx = new Service();
XX.UserAgent=@" Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0";
詳細解答請參見 微軟線上技術支援的如下回答:
http://www.velocityreviews.com/forums/t302174-why-do-i-get-quotthe-server-committed-a-protocol-violationquot.html
原文:http://www.cnblogs.com/pcajax/archive/2011/03/10/1979954.html