gpt4 book ai didi

c# - 为什么我的 ServicePointManager.ServerCertificateValidationCallback 被忽略了?

转载 作者:可可西里 更新时间:2023-11-01 09:13:00 26 4
gpt4 key购买 nike

我正在 winforms 应用程序中发出网络请求。我像这样提供自定义证书验证:

    ServicePointManager.ServerCertificateValidationCallback += 
new RemoteCertificateValidationCallback(certValidator.ValidateRemoteCertificate);

certValidator.ValidateRemoteCertificate 在哪里

public bool ValidateRemoteCertificate(object sender, X509Certificate certificate,
X509Chain chain, SslPolicyErrors policyErrors)
{
return false;
}

如您所见,此回调应拒绝所有服务器证书并关闭所有尝试的连接。

我的问题是这个回调被完全忽略了。我提交了一个 https 请求,它就像一个魅力。在调试器中观察它,我可以看到 ValidateRemoteCertificate 从未被调用。

为什么我的替换回调从未回调过?

编辑:LB 要求网络请求,所以这里是:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sourceUrl);
request.UseDefaultCredentials = true;
request.UserAgent = "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))";

request.KeepAlive = false;
request.Headers.Add("Accept-Language", "en-us,en;q=1.0");
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

编辑 2:它可能不相关,但在 .config 文件中我指示它使用配置的代理,如下所示:

<system.net>
<defaultProxy useDefaultCredentials="true"/>
</system.net>

编辑 3:下面是一个完整的、最小的示例,它显示了该行为。我希望这个示例抛出异常,因为所有证书都应该被拒绝,但它工作得很好。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;

namespace SPMCertCallbackDemonstrator
{
class Program
{
static void Main(string[] args)
{
ServicePointManager.ServerCertificateValidationCallback = delegate { return false;};
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com");
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
}
}
}

为什么我的替换回调从未回调过?

最佳答案

我发布的原始代码没有任何问题。我是通过 http 而不是 https 请求的。因此不需要证书验证。我一调用 https 请求,它就工作正常。

关于c# - 为什么我的 ServicePointManager.ServerCertificateValidationCallback 被忽略了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21343867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com