2014-09-10 84 views
0

首先,網站和帖子。Fiddler和.Net 3.5 SSL錯誤。在.Net 4.0中工作正常

https://saplic.receita.pb.gov.br/sintegra/SINf_ConsultaSintegra.jsp Fullfil場CNPJ值爲例如34151100004209.

工作正常,在瀏覽器和.NET 4.0的HttpWebRequest。但我不能調試的小提琴手並且不能讓它上的.Net 3.5

工作,我已經使用

System.Net.ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(customXertificateValidation); 
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3; 
System.Net.ServicePointManager.Expect100Continue = false; 

這是推動我瘋了。任何幫助將不勝感激 爲了使事情更清楚,我有一個問題發生在2個不同的地方(Fiddler和.net 3.5)

我試圖運行的代碼是。

CookieContainer CookCon = new CookieContainer(); 
    HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("http://sintegra.receita.pb.gov.br/sintegra/sintegra.asp?estado=pb"); 
    Request.Timeout = Configuration.TimeOut; 
    Request.Proxy = Configuration.Proxy; 
    Request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36"; 
    Request.Headers.Add("Accept-Encoding", "gzip, deflate"); 
    Request.CookieContainer = new CookieContainer(); 
    using (HttpWebResponse Response = Request.GetResponse() as HttpWebResponse) 
    { 
     foreach (Cookie C in Response.Cookies) 
     { 
      CookCon.Add(C); 
     } 
     Response.Close(); 
    } 

    HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("https://saplic.receita.pb.gov.br/sintegra/"); 
    Request.Referer = "http://sintegra.receita.pb.gov.br/sintegra/sintegra.asp?estado=pb"; 
    Request.Headers.Add("X-DevTools-Emulate-Network-Conditions-Client-Id", "C5E5561B-11F5-4D9E-A9D4-54A18E660D11"); 
    Request.CookieContainer = CookCon; 
    Request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; 
    Request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.103 Safari/537.36"; 

    string HTML = ""; 

    string Encoding = "ISO-8859-1"; 
    Request.Timeout = 20000; 

    Request.Headers.Add("Accept-Encoding", "gzip, deflate"); 
    using (HttpWebResponse Response = Request.GetResponse() as HttpWebResponse) 
    { 
     Stream S = Response.GetResponseStream(); 
     if (Response.ContentEncoding.ToLower().Contains("gzip")) 
     { 
      S = new GZipStream(S, CompressionMode.Decompress); 
      using (System.IO.StreamReader ResStream = new StreamReader(S, System.Text.Encoding.GetEncoding(Encoding))) 
      { 
       HTML = ResStream.ReadToEnd(); 
       ResStream.Close(); 
      } 
     } 
     else if (Response.ContentEncoding.ToLower().Contains("deflate")) 
     { 
      S = new DeflateStream(S, CompressionMode.Decompress); 
      using (System.IO.StreamReader ResStream = new StreamReader(S, System.Text.Encoding.GetEncoding(Encoding))) 
      { 
       HTML = ResStream.ReadToEnd(); 
       ResStream.Close(); 
      } 
     } 
     else 
     { 
      using (System.IO.StreamReader ResStream = new StreamReader(Response.GetResponseStream(), System.Text.Encoding.GetEncoding(Encoding))) 
      { 
       HTML = ResStream.ReadToEnd(); 
       ResStream.Close(); 
      } 
     } 
     S.Close(); 
     S.Dispose(); 
     Response.Close(); 
    } 

我得到的錯誤是「unexpeted EOF」錯誤時拋出,當我試圖讓後(代碼GetResponse的一部分以上)。 如果我嘗試使用Fiddler在Chrome上瀏覽網站,它不會返回北向,只是保持暫停,暫停,暫停而沒有任何內容。

如果我相同的代碼複製到一個新的4.0的項目,它運行沒有問題。 如果不明確,請張貼疑惑,我想盡可能清楚。

+0

如果它在.NET 4中,而不是3.5,可能是因爲你的SSL證書具有主題備用名稱(SAN,也稱爲「DNS名稱」)。在所有情況下,.NET 3.5都不處理SAN。 – vcsjones 2014-09-10 13:40:44

+0

有沒有workaournd呢?試圖谷歌這個SAN的東西,但沒有得到任何相關的。你能解釋一下嗎? – 2014-09-10 15:41:10

回答

0

既然沒有人幫助,我只是使用.NET 4.0框架做了一個web服務,我從3.5的應用程序調用它。

仍然沒有線索,爲什麼發生這種情況..