服务器提交了协议违规。 Section =使用tor代理时的ResponseStatusLine

时间:2012-07-26 17:41:26

标签: c# asp.net proxy httpwebrequest tor

我正在尝试使用我的asp.net应用程序使用tor代理发送httpwebrequest,并在调用webresponse.GetResponse()方法时收到此错误消息:

  

服务器提交了协议违规。节= ResponseStatusLine

我尝试在网上搜索解决方案,我找到了3个主要解决方案:

  1. 添加到Web.config。

    <system.net>
      <settings>
        <httpWebRequest useUnsafeHeaderParsing="true"/>
      </settings>
    </system.net>`
    
  2. 在代码中添加以下行:webRequest.ProtocolVersion = HttpVersion.Version10;

  3. 将代码行request.ServicePoint.Expect100Continue = false;添加到代码中。
  4. 列出的每个解决方案都没有改变错误信息。

    这是请求代码:

    WebRequest.DefaultWebProxy = new WebRequest("127.0.0.1:9051");
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
    
    webRequest.CookieContainer = new CookieContainer();
    webRequest.ProtocolVersion = HttpVersion.Version10;
    webRequest.KeepAlive = false;
    webRequest.Method = "GET";
    webRequest.ContentType = "application/x-www-form-urlencoded";
    webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
    webRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19";
    
    HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
    StreamReader streamReader = new StreamReader(webResponse.GetResponseStream());
    
    string html = streamReader.ReadToEnd();
    webResponse.Close();
    return html;
    

    任何人都可以帮我找到解决方案吗?

2 个答案:

答案 0 :(得分:3)

通过查看异常的Response属性然后检查StatusDescription和{{1},您可以获得有关您获得的异常的更多详细信息,实际上是WebException WebException.Status }属性。这将有助于您获得有关错误的更多详细信息,并希望指出您正确的方向。

这样的事情:

StatusCode

另外,请查看MSDN上的{{3}}示例以获取更多详细信息

答案 1 :(得分:0)

我遇到了同样的问题。 httpwebrequest getresponse方法总是返回错误协议vialotion,我用这种方式解决了问题;

首先,我使用xml com对象而不是xdocument或xmldocument。

这个com对象有一些版本的Microsft XML,v3.0-v5.0-v6.0。我使用的是v6.0。

MSXML2.DOMDocument60Class doc = new MSXML2.DOMDocument60Class();
doc.setProperty("ServerHTTPRequest",true);
doc.setProperty("ProhibitDTD", false); 
doc.async = false;
doc.load(extURL);  

if (doc.parseError.errorCode != 0)
{
 // error  
}
else
{
 // do stuff
}