热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> .Net编程>>正文内容

Asp.net WebService入门实例

发布时间:2011年08月05日点击数: 佚名

  Webservice它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service内部执行得到所需结果.Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。

  在Asp.net中实现一个WebService其实是一个非常简单的事情,跟新建网站一样,需要注意和了解的的是如何让自己的Webservice更加健壮,更加安全,稳定等。

  本文主要讲2个知识,一个是如何搭建WebService,一个是如何加入SOAP头认证,增加安全性。

  好第一个:

  ①打开VS--新建项目--选择Web--选择Asp.net Web服务应用程序

  

  ②好了,一个WebService就成功了,你可以直接运行,用其他程序调用HelloWorLd方法了。

  ③你可以写自己的方法,带参数等等。

  
  Webservice好实现,但是如何做好访问权限是重点,不然所有程序都可以调用你的Webservice了,很危险。WebService的安全性有很多,soap头认证,Token口令认证,ssl认证,Form认证,以及自己构造参数认证等等。

  
  这里采用soap头认证方式实现。

  ①首先我们构造一个认证类,注意类继承紫SoapHeader。认证类中放入用户名和密码。

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Web; 
  5.  
  6. namespace AMSendMsg 
  7.     public class Certificate : System.Web.Services.Protocols.SoapHeader 
  8.     { 
  9.         public Certificate() { } 
  10.         /// <summary> 
  11.         /// 用户名 
  12.         /// </summary> 
  13.         public string UserName { getset; } 
  14.  
  15.         /// <summary> 
  16.         /// 密码 
  17.         /// </summary> 
  18.         public string PassWord { getset; } 
  19.     } 

 ②WebService方法   

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Web; 
  5. using System.Web.Services; 
  6. using CJ; 
  7. using System.Data; 
  8. using System.Configuration; 
  9.  
  10. namespace AMSendMsg 
  11.  
  12.     [WebService(Namespace = "http://www.chinacloudtech.com/")] 
  13.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
  14.     [System.ComponentModel.ToolboxItem(false)] 
  15.  
  16.     public class AMSendMsg : System.Web.Services.WebService 
  17.     { 
  18.         public Certificate cer = new Certificate(); 
  19.      
  20.  
  21.         [System.Web.Services.Protocols.SoapHeader("cer")] 
  22.         [WebMethod] 
  23.         public string SendMsg(string Sender, string SenderPwd, string Receiver, string Subject, string Content, bool IsHtml) 
  24.         { 
  25.             try 
  26.             { 
  27.                 CJ_DevelopHelper.SqlConn_Str = ConfigurationManager.AppSettings["AMDBConnect"].ToString(); 
  28.  
  29.                 //首先验证是否有权限调用该功能 
  30.                 CJ_DevelopHelper.SqlStr = "select * from WebServiceUser where username='" + Server.HtmlEncode(cer.UserName.Replace("'""")) + "'"
  31.  
  32.         } 
  33.     } 

  ③注意的地方,WebService中首先获取用户传递过来的头认证获取用户名和密码,也就是 cer.UserName,cer.PassWord获取后,到系统数据库中验证是否该认证是正确的,并且有权限能够调用该方法。这里不得不说的是,我实 现准备了一张WebService权限控制表,规定那个用户可以调用那个方法,表结构很简单。

  username 认证名,password 密码,methods 可调用方法。然后每个客户端要像使用这个方法,必须先申请一个认证Key,其实就是向表中插入一条数据。然后使用申请的key来访问这个WebService方法。

  ④这是我的一个安全验证思路,其实可以再次扩展,例如商定加密算法,加密soap头;对于b/s的使用可以采用机器码作为password等等

  ⑤客户端调用   

  1. private void button1_Click(object sender, EventArgs e) 
  2.         { 
  3.             EPWS.AMSendMsgSoapClient sc = new EPWS.AMSendMsgSoapClient(); 
  4.             EPWS.Certificate cer = new EPWS.Certificate(); 
  5.             cer.UserName = "xxx"
  6.             cer.PassWord = "xxxxx"
  7.             MessageBox.Show(sc.SendMsg(cer, """""""""xx<font color=red>xxxxx</font>"true)); 
  8.         } 

这个只是一个简单的入门例子,也是比较常用的认证方法。大家有更好方式的可以交流下哦。

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作