在运行时构建时,如何在web.config中引用程序集?

时间:2012-07-27 14:07:03

标签: c# asp.net iis iis-7 .net-3.5

我有一个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'。

这是我的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();
        }
    }
}

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

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

0 个答案:

没有答案