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;

 

解決完這兩個問題以後,其餘的問題就迎刃而解了。

相關文章
相關標籤/搜索