一个简单的WebService实现例子,SOAP安全验证
WebService是基于SOAP协议进行网络通讯的,但本文只介绍了一个WebService简单的使用例子,没有详细介绍关于SOAP协议的知识,有兴趣的朋友可以网站搜索下, 这方面的资料是非常多。 下面说说WebService的例子吧。 1、新建一个WebService项目,在项目下新建一个SoapHeader.cs类,这个类是用来做WebSerivce安全性验证,此类必须继承.net类库的SoapHeader类。 代码清单: using System; using System.Web.Services.Protocols; namespace Shuanglu.WebService { public class MySoapHeader : SoapHeader { public MySoapHeader() { // //TODO: 在此处添加构造函数逻辑 // } private string _userid = string.Empty; private string _password = string.Empty; public string errinfo = "您要找的资源已被删除、已更名或暂时不可用。"; public string UserID { get { return _userid; } set { _userid = value; } } public string Password { get { return _password; } set { _password = value; } } public bool IsValid() { string Msg = string.Empty; return IsValid(_userid,_password,out Msg); } public bool IsValid(out string Msg) { return IsValid(_userid,out Msg); } public bool IsValid(string nUserID,string nPassword,out string Msg) { Msg = ""; try { if (nUserID == "19873534socrates" && nPassword == "daling234534") { return true; } else { Msg = "对不起你无权调用此WebService,可能的原因如下:1、你的帐号管理员禁用了。2、您的帐号的密码不正确!"; return false; } } catch (Exception e) { Msg = "对不起你无权调用此WebService,可能的原因如下:1、你的帐号管理员禁用了。2、您的帐号的密码不正确!<br/>" + e.Message; return false; } } } } 上面的代码清单这一行, 是验证客户端提交过来的用户名、密码。可以自行设定,在客户端调用的时候需和服务器端一致就可以了, 2、在WebService项目里新建一个 Test.asmx文件 ,用于给客户端调用WebService入口, 客户端调用WebService前必须对调用进行校验,看是否有调用的权限, 有权限则允许调用,否则返回空或错误提示信息,这个可以根据个人实际情况进行定义。 在这里仅写一个简单的调用例子。 代码清单: using System; using System.ComponentModel; using System.Web.Services; using System.Data; using System.Web.Services.Protocols; namespace Shuanglu.WebService { /// <summary> /// Article 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class Article : System.Web.Services.WebService { //定义报头,但不实例化,必须由客户端实例化 public MySoapHeader soapheader; [SoapHeader("soapheader",Direction = SoapHeaderDirection.InOut)] [WebMethod(Description = "Web服务调用测试",EnableSession = true)] public string MyTest() { if (soapheader.IsValid()) { string s = "Web服务调用测试成功"; return s; } return ""; } } } 注意上面代码清单中的红色字部分,在这两个地方要一致? public MySoapHeader soapheader;????????? [SoapHeader("soapheader",Direction = SoapHeaderDirection.InOut)] 如果不一致,将会报错误。 到此,一个简单的WebService项目就建好了。 下面我们将要把它部署起来。 在IIS里新建一个站点,XP系统的也可以新建一个虚拟目录。把新建的站点或是目录的根目录指向到刚才创建的WebService项目, 然后使用浏览器浏览刚才创建WebService站点或虚拟目录 Test.asmx文件,看看是不是已经正确的部署到IIS上面了。 成功部署WebSerivce到IIS,接下来我们就可以做一个简单的调用了。 3、新建一个WebApplication,或是WebSite项目, 添加WebService引用,在项目名称上右击菜单即弹出下面的菜单,把刚才部署到IIS上面的WebServiceURL填写到下面的URL栏,点前往。
右侧有一个Web 引用名,这个名称可以自定义,在引用WebService里会用到的。填写好之后,点击 ”添加引用“ 按钮,完成对WebService的引用。 在项目里新建一个web form 文件,test.aspx, test.aspx.cs文件代码清单:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Mike.Web { public partial class test1 : System.Web.UI.Page { protected void Page_Load(object sender,EventArgs e) {Mike.Web.Article.MySoapHeader soap = new Mike.Web.Article.MySoapHeader(); soap.UserID = "19873534socrates"; soap.Password = "daling234534"; //此处的用户名,密码需要各服务器上一致 ?Mike.Web.Article.Article bll = new Mike.Web.Article.Article(); bll.MySoapHeaderValue = soap; string result = bll.MyTest(); Response.Write(result); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |