加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService的简单使用

发布时间:2020-12-17 00:03:23 所属栏目:安全 来源:网络整理
导读:适合使用Web Services的情况 (1)跨越防火墙; (2)应用程序集成; (3)B2B集成; (4)软件重用 创建WebService 在项目中添加新项---Web服务 ?MyWebService.asmx ? /// summary /// MyWebService 的摘要说明 /// /summary [WebService(Namespace = "MyWe

适合使用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;
            }
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读