証明書によって保護された WCF を使用するクライアント アプリを構築します。Cert がインストールされ、IE 経由で WSDL にアクセスできますが、CaseExists にヒットすると、アプリは「FaultException `1 was unhanded: Invalid Certificate」をスローします。何か案は?証明書が無効だった場合、IE で WSDL にアクセスしたときにエラーが発生しませんか?
using System;
using System.Configuration;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Security;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel.Description;
using ConsoleApplication1.ServiceReference1;
using System.Diagnostics;
using System.ServiceModel.Channels;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// binding
BasicHttpBinding b = new BasicHttpBinding();
b.Security.Mode = BasicHttpSecurityMode.Transport;
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
// endpoint
EndpointAddress ea = new EndpointAddress(
"https://cut out endpoint.svc");
// fire it up
EBondingClient client = new EBondingClient(b, ea);
// toss in cert
client.ClientCredentials.Peer.PeerAuthentication.CertificateValidationMode =
System.ServiceModel.Security.X509CertificateValidationMode.None;
client.ClientCredentials.ClientCertificate.SetCertificate(
StoreLocation.CurrentUser,
StoreName.My,
X509FindType.FindBySubjectName,
"cut.out.cert.name");
// call
Console.WriteLine(client.CaseExists("hello world"));
client.Close();
Console.ReadLine();
}
}
}