WebService 服务可以返回任何可序列化的对象.本文代码给出返回基本数据类型及实体类结构示例和调用代码示例.
WebService代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
namespace StudentServer
/// <summary>
/// 本类实现WebService服务
/// 提供对各种数据类型的返回例子
/// 包括:
/// 基本数据类型(string,ini,bool,long,float等)
/// 类结构型(class),必须是可序列化的类
/// DataSet类型
/// </summary>
public class Demo : System.Web.Services.WebService
public Demo()
//CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的
InitializeComponent();
#region 组件设计器生成的代码
//Web 服务设计器所必需的
private IContainer components = null;
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
if(disposing && components != null)
components.Dispose();
base.Dispose(disposing);
#endregion
// WEB 服务示例
// HelloWorld() 示例服务返回字符串 Hello World
// 若要生成,请取消注释下列行,然后保存并生成项目
// 若要测试此 Web 服务,请按 F5 键
/// <summary>
/// 字符串型
/// </summary>
/// <returns>Hello World</returns>
[WebMethod]
public string HelloWorld()
return "Hello World";
/// <summary>
/// 整型
/// </summary>
/// <returns>Int</returns>
[WebMethod]
public int GetInt()
return 1234;
/// <summary>
/// 布尔型
/// </summary>
/// <returns>Bool</returns>
[WebMethod]
public bool GetBool()
return true;
/// <summary>
/// 返回实体类
/// 必须是已序列化的类
/// </summary>
/// <returns>学生类</returns>
[WebMethod]
public Student GetStudent()
Student stu = new Student();
stu.Name = "张三";
stu.Age = 25;
stu.Sex = true;
return stu;
/// <summary>
/// 返回DataSet数据类型
/// </summary>
/// <returns>DataSet</returns>
[WebMethod]
public DataSet GetDataSet()
DataSet ds = new DataSet();
return ds;
#region 定义可序列化类
* 为避免Framework1.1中返回实体类报错“请求格式无法识别。”
* 要在Web.Config文件中<system.web>添加以下内容:
* <webServices>
<protocols>
<add name="HttpPost" />
<add name="HttpGet" />
</protocols>
</webServices>
//指示下面的类可序列化
/// <summary>
/// 学生基本信息类
/// </summary>
[Serializable]
public class Student
/// <summary>
/// 构造函数
/// </summary>
public Student()
private string name;
/// <summary>
/// 姓名
/// </summary>
public string Name
return name;
name=value;
private bool sex;
/// <summary>
/// 性别--布尔型变量真为女,假为男
/// </summary>
public bool Sex
return sex;
sex=value;
private int age;
/// <summary>
/// 年龄
/// </summary>
public int Age
return age;
age=value;
#endregion
}
调用WebService服务示例代码如下:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using StudentClient.localhost;
namespace StudentClient
/// <summary>
/// FrmDemo 的摘要说明。
/// </summary>
public class FrmDemo : System.Windows.Forms.Form
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox txtName;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Button btnStu;
private System.Windows.Forms.Button btnInt;
private System.Windows.Forms.Button btnHello;
private System.Windows.Forms.Button btnDataSet;
private System.Windows.Forms.Button btnBool;
private System.Windows.Forms.TextBox txtSex;
private System.Windows.Forms.TextBox txtAge;
private System.Windows.Forms.TextBox txtOther;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public FrmDemo()
// Windows 窗体设计器支持所必需的
InitializeComponent();
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
if( disposing )
if(components != null)
components.Dispose();
base.Dispose( disposing );
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.txtName = new System.Windows.Forms.TextBox();
this.txtSex = new System.Windows.Forms.TextBox();
this.txtAge = new System.Windows.Forms.TextBox();
this.txtOther = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.btnStu = new System.Windows.Forms.Button();
this.btnInt = new System.Windows.Forms.Button();
this.btnHello = new System.Windows.Forms.Button();
this.btnDataSet = new System.Windows.Forms.Button();
this.btnBool = new System.Windows.Forms.Button();
this.SuspendLayout();
// label1
this.label1.Location = new System.Drawing.Point(32, 40);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(48, 16);
this.label1.TabIndex = 0;
this.label1.Text = "姓名:";
// label2
this.label2.Location = new System.Drawing.Point(32, 70);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(48, 16);
this.label2.TabIndex = 1;
this.label2.Text = "性别:";
// label3
this.label3.Location = new System.Drawing.Point(136, 70);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(48, 16);
this.label3.TabIndex = 2;
this.label3.Text = "年龄:";
// label4
this.label4.Font = new System.Drawing.Font("宋体", 14F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
this.label4.Location = new System.Drawing.Point(72, 8);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(136, 24);
this.label4.TabIndex = 3;
this.label4.Text = "学生基本信息";
// txtName
this.txtName.Location = new System.Drawing.Point(80, 36);
this.txtName.Name = "txtName";
this.txtName.Size = new System.Drawing.Size(144, 21);
this.txtName.TabIndex = 4;
this.txtName.Text = "";
// txtSex
this.txtSex.Location = new System.Drawing.Point(80, 64);
this.txtSex.Name = "txtSex";
this.txtSex.Size = new System.Drawing.Size(48, 21);
this.txtSex.TabIndex = 5;
this.txtSex.Text = "";
// txtAge
this.txtAge.Location = new System.Drawing.Point(184, 64);
this.txtAge.Name = "txtAge";
this.txtAge.Size = new System.Drawing.Size(40, 21);
this.txtAge.TabIndex = 6;
this.txtAge.Text = "";
// txtOther
this.txtOther.Location = new System.Drawing.Point(80, 96);
this.txtOther.Name = "txtOther";
this.txtOther.Size = new System.Drawing.Size(128, 21);
this.txtOther.TabIndex = 7;
this.txtOther.Text = "";
// label5
this.label5.Location = new System.Drawing.Point(32, 100);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(48, 16);
this.label5.TabIndex = 8;
this.label5.Text = "其它:";
// btnStu
this.btnStu.Location = new System.Drawing.Point(8, 128);
this.btnStu.Name = "btnStu";
this.btnStu.Size = new System.Drawing.Size(88, 24);
this.btnStu.TabIndex = 9;
this.btnStu.Text = "调用Student";
this.btnStu.Click += new System.EventHandler(this.btnStu_Click);
// btnInt
this.btnInt.Location = new System.Drawing.Point(200, 128);
this.btnInt.Name = "btnInt";
this.btnInt.Size = new System.Drawing.Size(32, 24);
this.btnInt.TabIndex = 10;
this.btnInt.Text = "Int";
this.btnInt.Click += new System.EventHandler(this.btnInt_Click);
// btnHello
this.btnHello.Location = new System.Drawing.Point(152, 128);
this.btnHello.Name = "btnHello";
this.btnHello.Size = new System.Drawing.Size(48, 24);
this.btnHello.TabIndex = 11;
this.btnHello.Text = "Hello";
this.btnHello.Click += new System.EventHandler(this.btnHello_Click);
// btnDataSet
this.btnDataSet.Location = new System.Drawing.Point(96, 128);
this.btnDataSet.Name = "btnDataSet";
this.btnDataSet.Size = new System.Drawing.Size(56, 24);
this.btnDataSet.TabIndex = 12;
this.btnDataSet.Text = "DataSet";
this.btnDataSet.Click += new System.EventHandler(this.btnDataSet_Click);
// btnBool
this.btnBool.Location = new System.Drawing.Point(232, 128);
this.btnBool.Name = "btnBool";
this.btnBool.Size = new System.Drawing.Size(40, 24);
this.btnBool.TabIndex = 13;
this.btnBool.Text = "Bool";
this.btnBool.Click += new System.EventHandler(this.btnBool_Click);
// FrmDemo
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(280, 158);
this.Controls.Add(this.btnBool);
this.Controls.Add(this.btnDataSet);
this.Controls.Add(this.btnHello);
this.Controls.Add(this.btnInt);
this.Controls.Add(this.btnStu);
this.Controls.Add(this.label5);
this.Controls.Add(this.txtOther);
this.Controls.Add(this.txtAge);
this.Controls.Add(this.txtSex);
this.Controls.Add(this.txtName);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Name = "FrmDemo";
this.Text = "FrmDemo";
this.ResumeLayout(false);
#endregion
/// <summary>
/// 调用学生信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStu_Click(object sender, System.EventArgs e)
//实例化服务类
Demo dm = new Demo();
//调用返回实体类服务方法
Student stu = dm.GetStudent();
txtName.Text = stu.Name;
txtSex.Text = (stu.Sex==false?"女":"男");
txtAge.Text = stu.Age.ToString();
/// <summary>
/// DataSet数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDataSet_Click(object sender, System.EventArgs e)
//实例化服务类
Demo dm = new Demo();
txtOther.Text = dm.GetDataSet().Tables.Count.ToString();
/// <summary>
/// 返回字符串
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnHello_Click(object sender, System.EventArgs e)
//实例化服务类
Demo dm = new Demo();
txtOther.Text = dm.HelloWorld();
/// <summary>
/// 返回整型
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnInt_Click(object sender, System.EventArgs e)
//实例化服务类
Demo dm = new Demo();
txtOther.Text = dm.GetInt().ToString();
/// <summary>
/// 返回布尔型
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnBool_Click(object sender, System.EventArgs e)
//实例化服务类
Demo dm = new Demo();
txtOther.Text = dm.GetBool().ToString();
}
窗体界面如下图:
1. 实体类:Account /* 账户实体类 */ public class Account { private String uname; //用户名 private Str