1. 新建Web项目,在其中新建.asmx文件,一个webService文件,代码如下:
Code
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Data.OleDb;
namespace WebServiceTest
{
/// <summary>
/// ISBN 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class ISBN : System.Web.Services.WebService
{
[WebMethod]
public string BookDetail(string strIsbn)
{
return GetBookDetails(strIsbn);
}
private string GetBookDetails(string strIsbn)
{
OleDbDataReader odr = null;
OleDbConnection oConn = null;
OleDbCommand oCmd = null;
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Library.mdb") + ";";
string sql = "Select BookName From Books Where ISBN = '" + strIsbn + "'";
string strBookTitle;
oConn = new OleDbConnection(strConn);
oCmd = new OleDbCommand(sql, oConn);
oConn.Open();
odr = oCmd.ExecuteReader(CommandBehavior.CloseConnection);
if (odr.Read())
{
strBookTitle = odr[0].ToString();
}
else
{
strBookTitle = "Book not found in the database";
}
odr.Close();
return strBookTitle;
}
}
}
以上代码用来查询Access数据库,输入参数为书本编号,返回值为书本名.在浏览器中访问此web服务,成功则进入下一步.
2. 进入此项目当前文件夹,使用C#创建代理类,命令如下:
>wsdl /l:cs /o:ISBNProxy.cs
http://localhost:52692/ISBN.asmx?WSDL /n:ISBNService
3. 现在编译新的代理代码:
>csc /out:ISBNProxy.dll /t:library /r:system.web.dll,system.dll,system.xml.dll,system.services.dll,
system.data.dll ISBNProxy.cs
执行完该语句后可以得到ISBNProxy.dll文件,将其复制到BIN目录下。
4. 在引用中添加ISBNProxy.dll,引用名称空间ISBNService。
Code
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using ISBNService;
namespace WebServiceTest
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnGetBook_Click(object sender, EventArgs e)
{
ISBN ws = new ISBN();
lblBookTitle.Text = ws.BookDetail(txtBookNo.Text.Trim());
}
}
}