错误:未找到用于授权用户的凭据缺少身份验证凭据

时间:2010-10-08 13:16:22

标签: c# ssl service

大家好,我遇到了问题,这是我第一次为支付门户设置Mutial SSL,下面的代码是我正在使用的,我得到的错误是:

  

System.Web.Services.Protocols.SoapException:找不到用于授权用户的凭据在System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse上缺少身份验证凭据[cert](SoapClientMessage消息,WebResponse响应,流responseStream,布局asyncCall)位于c:\ users \ hp \ documents \ visual studio 2010中的USBANK.epayWebService.epayWebServiceService.Payment(PaymentRequest PaymentRequest)中的System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object []参数) Projects \ USBANK \ USBANK \ Web References \ epayWebService \ Reference.cs:第953行,位于C:\ Users \ HP \ documents \ visual studio 2010 \ Projects \ USBANK \ USBANK \的USBANK.Default.Page_Load(Object sender,EventArgs e) Default.aspx.cs:第36行

我之前从未见过这个错误,也不确定问题是什么,我知道我必须加载.crt文件,我对此有任何帮助,这样会很棒。

谢谢!

string certPath = "C:\\inetpub\\SSLCertificate.cer";
        Documents\\Visual Studio 2010\\Projects\\USBANK\\USBANK\\SSLCertificate.cer";
        epayWebService.CardNotPresentCredit CNPC = new epayWebService.CardNotPresentCredit();
        epayWebService.PaymentRequest PR = new epayWebService.PaymentRequest();
        epayWebService.BillerCredential BC = new epayWebService.BillerCredential();
        epayWebService.PaymentMethod PM = new epayWebService.PaymentMethod();
        epayWebService.GetPaymentRequest GPR = new epayWebService.GetPaymentRequest();
        epayWebService.PaymentResponse Response = new epayWebService.PaymentResponse();
        BC.billerGroupID = "xxx";
        BC.billerID = "xxx";
        PR.billerCredential = BC;
        PR.paymentAmount = 0;
        PR.paymentDate = DateTime.Now;
        CNPC.cardNumber = "xxxxxxxxxxxxxx";
        PM.Item = CNPC;
        PR.paymentMethod = PM;
        PR.productCode = "Menu";
        try
        {
            epayWebService.epayWebServiceService ep = new epayWebService.epayWebServiceService();
            ep.Url = "https://xxx.xxxxxxxxx.com/EPayWebService/";
            ep.ClientCertificates.Add(X509Certificate.CreateFromCertFile(certPath));
            Response = ep.Payment(PR);
            LabelResponse.Text = Response.response.ToString();
        }
        catch(Exception ex)
        {
            LabelResponse.Text = ex.ToString();
        }

2 个答案:

答案 0 :(得分:0)

我们遇到了这个问题,原来我们发错了证书。您需要附上您的证书,而不是USBank证书。

答案 1 :(得分:0)

要验证自己,您需要自己的私钥。这通常与您的公共证书一起存储在一个文件中。它可能有“.pfx”或“.p12”扩展名。

此外,您需要使用X509Certificate2子类。奇怪的是,尽管它是一个“证书”,但该对象还可以携带客户端进行身份验证所需的私钥。