1

我有一个 WCF 服务,我需要一个用于客户端证书的自定义 SSL 验证器。但是,当我试图告诉我的服务使用什么类时,我会TypeLoadException说:

无法从程序集“ConnectorExtras”加载类型“ConnectorExtras.Validator”。

这是引用该类的 Web.Config 部分。

 <serviceCredentials>
    <clientCertificate>
      <authentication certificateValidationMode="Custom" 
                      customCertificateValidatorType="ConnectorExtras.Validator, ConnectorExtras" />
    </clientCertificate>
  </serviceCredentials>

我知道该部分是问题,因为如果我, ConnectorExtras在配置文件中省略程序集名称,错误将更改为

无法从程序集“System.ServiceModel,Version=3.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”加载类型“ConnectorExtras.Validator”。

这是我的验证器课程。该代码位于~\App_Code\Validator.cs网站上。

using System.IdentityModel.Selectors;
using System.IdentityModel.Tokens;
using System.Security.Cryptography.X509Certificates;
using ConnectorExtras.App_GlobalResources;

namespace ConnectorExtras
{
    public class Validator : X509CertificateValidator
    {
        public Validator()
        {
            _certToCompare = new X509Certificate(ValidatorResources.TestCert, "a");
        }

        private readonly X509Certificate _certToCompare;

        public override void Validate(X509Certificate2 certificate)
        {
            if(certificate.Equals(_certToCompare) == false)
                throw new SecurityTokenValidationException();
        }
    }
}

但是,如果我在构造函数中放置一个断点,它将永远不会被击中。

我需要做什么才能使用我的验证器进行自定义证书验证?

4

0 回答 0