适合使用Web Services的情况
(1)跨越防火墙;(2)应用程序集成;
(3)B2B集成;
(4)软件重用
创建WebService
在项目中添加新项--->Web服务 MyWebService.asmx/// <summary> /// MyWebService 的摘要说明 /// </summary> [WebService(Namespace = "MyWebService")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolBoxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class MyWebService : System.Web.Services.WebService { public MySoapHeader mySH = null; //在客户端使用的时候实例化 [WebMethod] public string HelloWorld() { return "Hello World"; } [SoapHeader("mySH")] //这里通过SoapHeader传递信息 [WebMethod(Description="判断当前用户是否正确")] public string IsRigth() { if (mySH.IsRight()) { return "账号有效"; } return "账号无效"; } }
MySoapHeader类的代码
public class MySoapHeader:SoapHeader { private string username; public string Username { get { return username; } set { username = value; } } private string pwd; public string Pwd { get { return pwd; } set { pwd = value; } } public bool IsRight() { //简单的判断 用户名和密码是不是admin if (username == "admin" && pwd == "admin") { return true; } return false; } }
引用WebService
如果在其他项目中要引用此WebService,需要添加服务引用。 输入公开的WebService端点,本地直接点发现即可找到要添加的项,添加
在其他页面调用代码:
using (ServiceReference1.MyWebServiceSoapClient client = new ServiceReference1.MyWebServiceSoapClient()) { ServiceReference1.MySoapHeader mysh = new ServiceReference1.MySoapHeader(); //实例WebService提供端 的SoapHeader mysh.Username = "admin"; //初始化用户名 密码 mysh.Pwd = "admin"; string str =client.HelloWorld(); string s = client.IsRigth(mysh); //调用方法时,传入SoapHeader Response.Write(str+"--"+s); //在页面输出 }
异步调用WebService
只需在引用WebService后,配置服务引用,选中生成异步操作即可。系统会自动生成异步操作方法
第二种异步调用方法,使用BackgroundWorker
BackgroundWorker backWorker = new BackgroundWorker(); backWorker.DoWork += new DoWorkEventHandler(backWorker_DoWork);//制定执行的事件 backWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backWorker_RunWorkerCompleted); //执行完毕后的回调方法 backWorker.RunWorkerAsync(); //开始异步调用 void backWorker_RunWorkerCompleted(object sender,RunWorkerCompletedEventArgs e) { Response.Write(e.Result); //输出结果 } void backWorker_DoWork(object sender,DoWorkEventArgs e) { using (ServiceReference1.MyWebServiceSoapClient client = new ServiceReference1.MyWebServiceSoapClient()) { ServiceReference1.MySoapHeader mysh = new ServiceReference1.MySoapHeader(); mysh.Username = "admin"; mysh.Pwd = "admin"; string str = client.HelloWorld(); string s = client.IsRigth(mysh); e.Result = str + "--" + s; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。