1.WS须支持可序列化的对象,对泛型 支持不够
2.WS的发部 : 先 生成网站,再 发部网站。
以下是WS的一些代码
using System;
using System.Linq;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;using System.Xml.Linq;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;[System.Web.Script.Services.ScriptService]
[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。// [System.Web.Script.Services.ScriptService]public class Service : System.Web.Services.WebService{ public Service () {//如果使用设计的组件,请取消注释以下行
//InitializeComponent(); }[WebMethod]
public string HelloWorld() { return "Hello World"; }/// <summary> /// 没有【WebMethod】则为内部方法 /// </summary> /// <returns></returns> [System.Web.Script.Services.ScriptMethod] public string Hello() { return "Hello"; } [WebMethod] public int Add(int m, int n) { return m + n; }
[WebMethod]
public string[] GetRandom(int m) { Random r = new Random();string[] str = new string[m];
for (int i = 0; i < m; i++) { str[i] = r.Next(1,100).ToString(); } return str;}
/// <summary>
/// web Service对现有的泛型支持不够,将以用字符串数组替换 /// </summary> /// <param name="m"></param> /// <returns></returns> [WebMethod] public List<string> GetCollection(int m) { Random r = new Random();List<string> list=new List<string>();
for(int i=0;i<m;i++)
{ list.Add(r.Next(1,100).ToString()); }return list;
}[WebMethod]
public DataTable GetProducts(int CategoryID) { SqlConnection sqlcon = new SqlConnection("server=.;uid=sa;pwd=;database=NorthWind"); sqlcon.Open();SqlDataAdapter sda = new SqlDataAdapter("select * from Product where 类别ID="+CategoryID,sqlcon);
DataSet ds = new DataSet(); sda.Fill(ds,"temp"); sqlcon.Close();return ds.Tables["temp"];
}}
3.在项目中调用WS
先在项目中添加Web引用,将Ws 服务地址的URL 如:http://lockhost/ibeifeng/service.asmx ,更改Web 引 用名(如:localhost),添加引用。
4.具体调用,假设置WS引用名为localhost
protected void Button1_Click(object sender, EventArgs e)
{ //生成代理类 localhost.Service ws = new localhost.Service(); //测试服务1 //Response.Write(ws.HelloWorld());//测试服务2
//Response.Write(ws.Add(10,6));//测试服务3
// this.DropDownList1.DataSource=ws.GetRandom(10); // this.DropDownList1.DataBind();//测试服务4
this.GridView1.DataSource = ws.GetProducts(int.Parse(this.TextBox1.Text)); this.GridView1.DataBind(); }