2012-10-14 242 views
4

我有下面的代碼,這導致了WebException,我無法弄清楚爲什麼我的生活。 Windows 8 RTM上的VS2012/.Net 4.5 RTM。ServerCertificateValidationCallback被忽略

ServicePointManager.CertificatePolicy = null; 
    ServicePointManager.CheckCertificateRevocationList = false; 
    ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

    var request = WebRequest.Create(url) as HttpWebRequest; 
    request.ServerCertificateValidationCallback = delegate { return true; }; 

    var response = request.GetResponse(); 

    WebException was unhandled 
    The request was aborted: Could not create SSL/TLS secure channel. 

我最初有回調作爲自己的方法,它從來沒有被調用過。任何想法爲什麼我無法忽略SSL驗證錯誤並將所有敏感數據發送到未知Web服務器?

+0

當您嘗試使用其他SSL服務器(如https:// www.google.com)時會發生什麼?我認爲你的連接在啓動SSL/TLS握手之前失敗了。 – Dai

+0

你說得對,我使用了另一臺服務器(使用有效的SSL,但通過IP檢索,原始服務器自簽名),並執行回調並檢索內容。任何想法可能導致連接在回調之前中斷,當它在Firefox和IE10中都可用時? – Joe

+0

我不能告訴你 - 你必須使用像Wireshark這樣的數據包嗅探器來查看你的程序與Firefox/IE相比的表現。但是有幾件事情浮現在腦海中:您是否使用了錯誤的端口號,或者沒有足夠快地啓動TLS握手? – Dai

回答