我有一个 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();
}
}
}
但是,如果我在构造函数中放置一个断点,它将永远不会被击中。
我需要做什么才能使用我的验证器进行自定义证书验证?