WCF证书自定义validation – 向客户端发送exception消息

我有一个简单的WCF服务配置为具有传输安全性和证书客户端凭据。 我将自定义证书validation程序插入其中,并抛出FaultException。 我的问题是esception消息没有到达客户端:我只收到MessageSecurityException而没有任何故障…如果我在net.tcp(自托管)中转换我的服务,我接收一个CommunicationExcetion,没有任何错误。

这是我的web.config的一部分:

                              

和我的确认者:

  public class CPSValidator : System.IdentityModel.Selectors.X509CertificateValidator { public override void Validate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw new FaultException("Certificate is not from a trusted issuer"); } } 

任何的想法 ?

在此先感谢您的帮助!

据我所知,您在validation器中抛出的任何exception都不会到达客户端。 客户端始终收到MessageSecurityException。 只有在服务级别(在服务实现中)发生并映射到FaultContract的exception才会正确发送到客户端。

关心巴勃罗。

正如Yahia和Pablo所回答的那样,证书validation不会在服务级别进行。 因此,FaultException无法到达客户端。 但这是真的,因为我正在使用传输安全模式。 为了将消息发送回客户端,我必须将我的安全模式从Transport更改为TransportWithMessageCredentials,如下所示:

     

这样,证书validation在服务级别完成,因此可以通过faultException将错误消息发送到客户端。

您是否尝试在服务器上启用WCF诊断以在呼叫到达服务之前捕获WCF管道中的问题?