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;
解决完这两个问题以后,其余的问题就迎刃而解了。