HttpRequest访问Https带有证书并使用WSDL文档生成代理类方案
?
HttpRequest访问Https带有证书并使用WSDL文档生成代理类方案(2)
?
?
前面的文章说了怎么实现代理类的生成我使用。
在使用的过程 中我又碰到了一个很棘手的问题这是我的代码
?
?
????????[WebMethod?]
???????? public ??OrderNciis?GetNciisResult( string ?onName,? string ?onId)
????????{
???????????? // 获取授权文件
???????????? string ?inLicense? = ?LotteryMethods.GetContext( 11 );
???????????? // 生成的WSDL类()
????????????nciicGetCondition?objText? = ? new ?nciicGetCondition();
???????????? // 获取基础URL
????????????objText.Url? = ?LotteryMethods.GetContext( 12 );
???????????? // 编码
????????????objText.RequestEncoding? = ?Encoding.UTF8;
???????????? // 创建证书文件
????????????X509Certificate?objx509? = ? new ?X509Certificate(System.Configuration.ConfigurationSettings.AppSettings[ " cd " ].ToString().Trim());
???????????? // 证书
????????????objText.ClientCertificates.Add(objx509);
???????????? // 方式可有可无
????????????objText.UserAgent? = ? " Client?Cert?Sample " ;
???????????? // 读XML文件
???????????? string ?inConditions? = ?OrderNciisXml(onName,?onId);
???????????? // 返回查询结果XML
????????????OrderNciis?model? = ? new ?OrderNciis();
????????????model.onLottery? = ?objText.nciicCheck(inLicense,?inConditions);
???????????? return ?model;
????????}
?
?? 代码应该是没有问题,在本地的Vs里测试没有问题,如果在ISS里使用时报基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系”证书验证失败
城刚开始我还以为是文章路径的问题,结果不是,
接着找,后来认为是IIS里配置问题,还是不对,后来,看到??网上也有很多这的问题,但是没有真正解决的,一般都 是在说怎么生成代理类,还有带有证书的过程
?
我想了想,还是自己想办法解决吧,我把代理类分析了一下才知道 ,原来证书是在代理类里验证的,验证后会返回一个值 表示是否通过,这就好看了,
我们定义一个方法
??
???????????? // ?trust?any?certificate!!!
????????????System.Console.WriteLine( " Warning,?trust?any?certificate " );
???????????? // 为了通过证书验证,总是返回true
???????????? return ? true ;
????}
?
只要这个方法返回为True不就完了吗?呵呵
还需要几个命名空间
?
???? using ?System.Net.Security;
???? using ?System.Security.Authentication;
???? using ?System.Security.Cryptography.X509Certificates;
?
?
这个应该在什么时候调用呢,当然 是在构造器里合适些
?
???????? public ?nciicGetCondition()
????????{
???????????? // 验证服务器证书回调自动验证
????????????ServicePointManager.ServerCertificateValidationCallback? += ?RemoteCertificateValidate;
????????}
?
?
?
?????????????????????????
???????????????????????????? ?如有转载请注明出处谢谢合作!!!