这是我第一次创建WCF服务。我需要使用HTTPS,因为我将使用MembershipBinding。到目前为止,我所采取的步骤是:
我现在正在使用WCF客户端测试该服务,但我得到了以下消息:
错误:如果这是您可以访问的Windows (R)通信基础服务,则无法从https://localhost:444/Service.svc获取元数据,请检查是否已启用指定地址的元数据发布。有关启用元数据发布的帮助,请参考http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange错误URI:https://localhost:444/Service.svc元数据包含无法解析的引用的MSDN文档:“https://localhost:444/Service.svc”。无法通过授权“localhost:444”为SSL/TLS安全信道建立信任关系。基础连接已关闭:无法为SSL/TLS安全通道建立信任关系。远程证书无效,根据验证procedure.HTTP GET错误URI:https://localhost:444/Service.svc下载'https://localhost:444/Service.svc‘时出错。基础连接已关闭:无法为SSL/TLS安全通道建立信任关系。根据验证过程,远程证书无效。
错误表明存在信任证书的问题,但我信任用于创建证书的证书颁发机构,因此我不知道如何解决它。当我使用http时,这项服务运行良好。
提前谢谢。
发布于 2017-06-02 11:23:25
由于您的证书是自签名的,您需要在客户端调用中添加一个黑客:
using (MyWCFServiceClient client = new MyWCFServiceClient())
{
#if DEBUG
ServicePointManager.ServerCertificateValidationCallback = TrustAllCertificatesCallback;
#endif
client.MyCall();
}以及TrustAllCertificatesCallback的定义:
internal static bool TrustAllCertificatesCallback(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors errors)
{
bool isValid = true;
// TODO logic to check your self-signed certifiacte
return isValid;
}应该在生产环境中禁用TrustAllCertificatesCallback回调。
https://stackoverflow.com/questions/44312384
复制相似问题