C# 如何理解使用.NET WebRequest和PFX证书的Windows/.NET和Linux/Mono之间的区别?

C# 如何理解使用.NET WebRequest和PFX证书的Windows/.NET和Linux/Mono之间的区别?,c#,linux,windows,mono,client-certificates,C#,Linux,Windows,Mono,Client Certificates,我目前正在使用一个使用客户端证书身份验证的API。我有一个在Linux/Mono下工作的简单代码块。在Windows/.NET下执行时,我收到一个200,但响应内容提示我需要一个证书来进行此调用 ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; var x509 = new X509Certifica

我目前正在使用一个使用客户端证书身份验证的API。我有一个在Linux/Mono下工作的简单代码块。在Windows/.NET下执行时,我收到一个200,但响应内容提示我需要一个证书来进行此调用

    ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
    var x509 = new X509Certificate2("foo.pfx", "test");
    var request = (HttpWebRequest)WebRequest.Create("https://domain.com:8081");
    request.Method = "POST";
    request.ClientCertificates.Add(x509);
    const string data = "{\"foo\":\"bar\"}";
    var postdata = Encoding.ASCII.GetBytes(data);
    request.ContentLength = data.Length;
    var myStream = request.GetRequestStream();
    myStream.Write(postdata, 0, postdata.Length);
    var response = (HttpWebResponse)request.GetResponse();
    Console.WriteLine(new StreamReader(response.GetResponseStream()).ReadToEnd());

两种情况下使用相同的foo.pfx。有人知道我如何解释结果的差异吗?

是否有重定向? 如果是,MSDN表示:

自动重定向时会清除授权标头,HttpWebRequest会自动尝试重新验证重定向位置。实际上,这意味着如果可能遇到重定向,应用程序无法将自定义身份验证信息放入授权头中。相反,应用程序必须实现并注册自定义身份验证模块。System.Net.AuthenticationManager和相关类用于实现自定义身份验证模块。AuthenticationManager.Register方法注册自定义身份验证模块


不,没有任何重定向。这是一个单一的请求/响应。