2010-10-19 79 views
2

下面的函數在控制檯應用程序中工作,但它不在我的asp.net網站中工作。我收到一個錯誤: 根據驗證程序,遠程證書無效。根據驗證程序,遠程證書無效。 GMAIL

public static void SendEmail(MailMessage mm) 
{ 
    SmtpClient smtp = new SmtpClient(); 
    smtp.Host = "smtp.gmail.com"; 
    smtp.Port = 587; 
    smtp.EnableSsl = true; 
    smtp.Credentials = new NetworkCredential("[email protected]", "Pass"); 

    smtp.Send(mm); 
} 

回答

4

您可以嘗試處理證書驗證事件,以便更容易確定遠程證書被視爲無效的原因。爲此,調用SendEmail方法之前添加以下行:

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate); 

然後提供ValidateServerCertificate實現,像

public bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) 
{ 
    // replace with proper validation 
    if (sslPolicyErrors == SslPolicyErrors.None) 
     return true; 
    else 
     return false; 
} 

通過ValidateServerCertificate所收到的參數應該給你關於爲什麼驗證失敗的細節(檢查sslPolicyErrors)。您還可以訪問遠程證書和證書頒發機構鏈。

一種可能的情況是,您在與控制檯應用程序不同的用戶下運行網站,並且此用戶不信任gmail證書的頒發者(或鏈中的中介機構)。如果您以某種方式從Windows證書存儲中的本地計算機/受信任的根證書中刪除了證書,則可能會發生這種情況。

相關問題