2011-09-26 88 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