我拨打电话以使用 JsonServiceClient 序列化我的请求对象。我的服务器正在使用 https,我创建了一个自签名证书。
当客户端尝试连接并且服务器响应证书不受信任并且服务器的身份尚未验证时,似乎会引发异常。
在浏览器中,我可以忽略此消息。如何让 JsonService 客户端使用 https 和自签名证书?
我拨打电话以使用 JsonServiceClient 序列化我的请求对象。我的服务器正在使用 https,我创建了一个自签名证书。
当客户端尝试连接并且服务器响应证书不受信任并且服务器的身份尚未验证时,似乎会引发异常。
在浏览器中,我可以忽略此消息。如何让 JsonService 客户端使用 https 和自签名证书?
我认为这与正在发生的事情类似。您可以在此处和此处获取有关 ServerCertificateValidationCallback 的更多信息。下面是一个测试,应该提供一个示例/模板来解决 JsonServiceClient 的“不可信”问题。显然,编写自己的证书验证存在一些风险。
public void Test()
{
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate);
var client = new JsonServiceClient();
var response = client.Post<string>("https://localhost/Secure/Route", new MySecureRequest());
Assert.IsNotNull(response);
}
private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors policyErrors)
{
//Do something to check the certificate is valid.
return false || cert.Subject.ToUpper().Contains("Something in Cert");
}
希望这可以帮助。