2011-09-26 86 views
2

如何評估以下代碼?如何評估多個ServicePointManager.ServerCertificateValidationCallback方法?

ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificateA; 
ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificateB; 

給定一個HttpWebRequest的,是不夠的,如果的驗證方法之一返回true,還是他們都有返回true?即

ValidateRemoteCertificateA && ValidateRemoteCertificateB 

ValidateRemoteCertificateA || ValidateRemoteCertificateB 

乾杯, tamberg

回答

3

它將使用最後一個委託的返回值增加,在所有情況下。

ServerCertificateValidationCallbackmulticast delegate財產。
書寫ServerCertificateValidationCallback += xx附加到其調用列表。
多播委託的返回值是列表中最後一個委託的返回值。

+1

非常感謝您的直接解釋。這似乎是一個相當奇怪的設計,因爲多個HttpWebRequests可能來自不同的模塊,而這些模塊甚至可能不知道對方。 – tamberg

+1

是; [他們不應該使用全局狀態來管理本地問題](http://blogs.msdn.com/b/oldnewthing/archive/2008/12/11/9193695.aspx)。 – SLaks

+1

@SLaks - 你有什麼建議可以解決這個問題嗎? ServerCertificateValidationCallback是我接觸到的對這類證書進行自定義驗證的唯一方式,但對於我的目的而言,它的範圍似乎過於寬泛(在一種方法中,添加自定義驗證以忽略特定環境中的ssl錯誤) 。謝謝=) – frax