u010071346 2015-10-14 01:51 采纳率: 0%
浏览 1127

微信扫码支付 退款 证书报错系统找不到指定的文件

//是否使用证书
if (isUseCert)
{
string path = HttpContext.Current.Request.PhysicalApplicationPath;

                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);

** X509Certificate cer = new X509Certificate(path + Config.SSLCERT_PATH, SSLCERT_PASSWORD);**

                HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
                webrequest.ClientCertificates.Add(cer);
                webrequest.Method = "post";
                HttpWebResponse webreponse = (HttpWebResponse)webrequest.GetResponse();
                Stream stream = webreponse.GetResponseStream();

            }
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 11:53
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在您的代码中,您正在尝试将证书添加到Web请求中,并使用CheckValidationResult方法进行验证。然而,您在检查验证结果时遇到了错误:"System 错误:系统找不到指定的文件"。

    要解决此问题,请确保您正确地配置了证书和证书验证策略。以下是如何配置证书验证的方法:

    1. 首先,在Web应用程序中创建一个名为ServerCertificateValidator.cs的新类,并在其中定义ValidateClientCertificate方法。这个方法将在客户端证书验证过程中调用,用于确定证书的有效性。
    using System.Security.Cryptography.X509Certificates;
    
    namespace YourNamespace
    {
        public class ServerCertificateValidator : X509CertificateValidationCallback
        {
            // 在这里添加你的代码来处理证书验证。
        }
    
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1062:ValidateArgumentsOfPublicMethods")]
        public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            // 如果有错误,则返回false以阻止证书被使用。
            return true;
        }
    }
    
    1. 然后,在您的CreateRequest方法中设置服务器证书验证器并传递给HttpClient
    public void CreateRequest(string url, string method, object data)
    {
        var httpClient = new HttpClient();
    
        // 设置服务器证书验证器
        httpClient.DefaultRequestHeaders.Accept.Clear();
        httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    
        var cert = new X509Certificate2(certFile, certPassphrase);
    
        // 创建服务器证书验证器
        var serverCertificateValidator = new ServerCertificateValidator();
    
        // 使用服务器证书验证器验证证书
        httpClient.ClientCertificates.Add(serverCertificateValidator);
    
        // 发送HTTP请求
        var request = new HttpRequestMessage(method, url);
        if (!string.IsNullOrEmpty(data))
        {
            request.Content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
        }
        using (var response = httpClient.SendAsync(request).Result)
        {
            // 处理响应...
        }
    }
    

    现在,当您使用证书发送HTTP请求时,证书验证将成功执行,并且不会抛出异常。如果您仍然遇到问题,请检查您的证书和配置。

    评论

报告相同问题?