ASP.Net链接WebServer使用Https协议(证书)

ASP.Net使用Https(证书)协议链接WebServicehtml

最近使用ASP.Net链接WebService,不过走的协议是Https的,我通常用的使用都是普通的http协议。因此刚开始有点不值从何下手,不过经过查阅资料,这条路是走通了,下面简单的记录一下使用方法。web

这是网上的教程:安全

http://www.cnblogs.com/denylau/archive/2010/07/23/1783530.htmlthis

WebService入门教程。spa

 

http://www.cnblogs.com/sufei/archive/2010/03/14/https.html代理

HTTPS  ASP.Net访问WebServicehtm

 

 

有的朋友并不想直接添加Web引用,想要构建一个类而后供给整个程序使用。blog

首先要生成一个代理类,可是在生成代理类的时候遇到了问题,没有证书一直提示没法生成代理类。教程

经过WSDL咱们能够发现,生成代理类有多种方式,第一种也是经常使用的写入一个WebService的链接,不过还能够经过文件生成代理类。经过访问wsdl的链接将源文件保存下来,另存为wsdl后缀名的文件。ip

 

 

 

 

使用命令参数转到D:/web 目录下

 

 

 

 

如今代理类已经生成了,咱们就可使用了。

关于介绍WSDL的帖子仍是用不少的,下面是其中一篇

http://www.cnblogs.com/xiaobaidhg/archive/2007/04/11/707956.html

 

 

由于使用使用的证书因此在程序中使用过程当中还会提示

"基础链接已经关闭: 未能为 SSL/TLS 安全通道创建信任关系"证书验证失败

http://www.cnblogs.com/sufei/archive/2010/03/23/1692811.html

在代理的构造方法中回调

  public AxisServerExImplService(string ipAddr, string port)

        {

            this.Url = "https://" + ipAddr + ":" + port + "/OTPAuthenSystem/axis/services/asService?wsdl";

            System.Net.ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;

        }

        private bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)

        {

            return true;

        }

至此:咱们就能够调用Https协议下的WebService了。

 

总结一下:

一、  首先要使用WebService有两种方式第一直接引用,第二,写一个代理类。代理类必定要经过WSDL生成,HTTPS协议下生成代理类的时候会提示证书不受信任。经过网页打开wsdl的地址,另存为一个后缀名为wsdl的文件。

 

二、  引用该类以后还会提示基础链接已经关闭: 未能为 SSL/TLS 安全通道创建信任关系”证书验证失败

在该代理类的构造方法中采用回调private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error){
            // trust any certificate!!!
            System.Console.WriteLine("Warning, trust any certificate");
            //为了经过证书验证,老是返回true
            return true;
    }

引用命名空间。

using System.Net;
    using System.Net.Security;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;

 

解决完这两个问题以后,其余的问题就迎刃而解了。

相关文章
相关标签/搜索