2012-07-26 9 views
8

का उपयोग कर मैं एक httpwebrequest भेजने के लिए मेरे asp.net अनुप्रयोग के साथ एक टो प्रॉक्सी का उपयोग कोशिश कर रहा हूँ और जब webresponse.GetResponse() विधि बुला मैं यह त्रुटि संदेश प्राप्त:सर्वर ने प्रोटोकॉल उल्लंघन किया है। धारा = ResponseStatusLine जब एक टो प्रॉक्सी

The server committed a protocol violation. Section=ResponseStatusLine

मैं वेब पर एक समाधान के लिए खोज की कोशिश की है और मैं इस त्रुटि के लिए 3 मुख्य समाधान पाया:

  1. Web.config में जोड़े। कोड को webRequest.ProtocolVersion = HttpVersion.Version10;:

    <system.net> 
        <settings> 
        <httpWebRequest useUnsafeHeaderParsing="true"/> 
        </settings> 
    </system.net>` 
    
  2. पंक्ति जोड़ें।

  3. कोड में request.ServicePoint.Expect100Continue = false; लाइन जोड़ें।

सूचीबद्ध समाधानों में से प्रत्येक ने त्रुटि संदेश के बारे में कोई चीज़ नहीं बदली।

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; 

किसी को भी मदद कर सकते हैं मुझे इस के लिए एक समाधान खोजने के:

यहाँ अनुरोध कोड है?

उत्तर

3

आप अपवाद मिल रहा है जो वास्तव में एक WebException अपवाद के Response प्रॉपर्टी दिखाई दे रही है और फिर StatusDescription और StatusCode गुण की जाँच करके है के बारे में अधिक जानकारी प्राप्त कर सकते हैं। यह आपको त्रुटि के बारे में अधिक जानकारी प्राप्त करने में मदद करेगा और उम्मीद है कि आपको सही दिशा में इंगित करेगा।

कुछ इस तरह:

catch(WebException e) 
    { 
     if(e.Status == WebExceptionStatus.ProtocolError) 
     { 
      Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode); 
      Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription); 
     } 
    } 

इसके अलावा, MSDN पर WebException.Status उदाहरण पर एक नज़र डालें और अधिक जानकारी के

+3

मैंने इन पंक्तियों को जोड़ने का प्रयास किया लेकिन स्थिति प्रोटोकॉल त्रुटि नहीं है लेकिन सर्वरप्रोटोकॉल उल्लंघन। –

+3

वास्तव में, प्रतिक्रिया मेरे अपवाद के लिए शून्य है :( –

+0

यहां वही समस्या है। प्रतिक्रिया शून्य है। – tnktnk

0

प्राप्त करने के लिए मैं एक ही समस्या थी। httpwebrequest getresponse विधि हमेशा त्रुटि प्रोटोकॉल vialotion लौटते हैं और मैं इस तरह से हल हल हल;

सबसे पहले मैं xdocument या xmldocument के बजाय xml com ऑब्जेक्ट का उपयोग करता हूं।

इस कॉम ऑब्जेक्ट में कुछ संस्करण माइक्रोस्कोफ्ट एक्सएमएल, 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 
} 
संबंधित मुद्दे

 संबंधित मुद्दे