開發WebService小例
一 / 打開VS,新建項目--->ASP.NET WEB服務應用程序-->命名她(如WS1)
二 / 打開**.asmx代碼視圖,寫入相關代碼,(此例代碼如下:)
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
namespace WS1
{
/// <summary>
/// Service1 的摘要說明
/// </summary>
[WebService(Namespace = "http://tech10.com.cn/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class getUsers : System.Web.Services.WebService
{
[WebMethod]
public DataSet SQLDB(string servername,string databasename,string uid,string pwd,string Query)
{
try
{
SqlConnection CS = new SqlConnection("server="+ servername +";database="+ databasename +";user id="+ uid +";password="+ pwd +"");
SqlDataAdapter myCommand = new SqlDataAdapter(Query, CS);
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet, "Results");
return myDataSet;
}
catch (Exception ex)
{
return DataError(ex);
}
}
//用來查詢Access數據庫的方法
[WebMethod]
public DataSet AccessDB(string dbname,string Query)
{
try
{
string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ this.Server.MapPath(dbname);
OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);
OleDbCommand myAccessCommand = new OleDbCommand(Query, myAccessConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
myAccessConn.Open();
DataSet myDataSet = new DataSet();
myDataAdapter.Fill(myDataSet, "Results");
myAccessConn.Close();
return myDataSet;
}
catch (Exception ex)
{
return DataError(ex);
}
}
//處理錯誤的方法:
public DataSet DataError(Exception ex)
{
DataSet errDS = new DataSet("Errors");
DataTable errTable = errDS.Tables.Add("Error");
errTable.Columns.Add("Message");
errTable.Rows.Add(new Object[] { ex.Message });
return errDS;
}
}
}
三 / 將其編譯並發布後,在IIS服務器上佈署一個虛擬目錄,如:http://127.0.0.1/ws/
打開IE,測試一下http://127.0.0.1/ws/getUsers.asmx
四 / 打開VS,再建立一個客戶端調用項目,可以是BS,也可以是CS......(在此例中為BS)項目名稱:Call_WS1
五 / 在項目名稱上點擊右鍵,選擇[添加WEB引用]在打開的對話框中,輸入http://127.0.0.1/ws/getUsers.asmx後確定她
六 / Default.aspx代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Call_WS1._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Call Web Serivce</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Get SQL DATA"
onclick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="GET ACCESS DATA"
onclick="Button2_Click" />
<asp:GridView ID="GridView1" runat="server" Width="100%">
</asp:GridView>
</div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</form>
</body>
</html>
七 / Default.aspx.cs代碼如下
using System;
using System.Collections;
using System.Configuration;
using System.Data;
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;
namespace Call_WS1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//myWS.Credentials = System.Net.CredentialCache.DefaultCredentials;
Call_WS1.WebReference.getUsers myget = new Call_WS1.WebReference.getUsers();
DataSet ds = myget.SQLDB("JPCTEST", "TestForKaoo", "sa", "10000", "select * from Users");
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();
Label1.Text = "SQL OK";
}
protected void Button2_Click(object sender, EventArgs e)
{
Call_WS1.WebReference.getUsers myget = new Call_WS1.WebReference.getUsers();
DataSet ds = myget.AccessDB("db1.mdb", "select * from Users");
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();
Label1.Text = "ACCESS OK";
}
}
}
注意:SQL服務器信息,表名及ACCESS之DB要存在,虛擬目錄(ws)的訪問權限為匿名,黙認為ASPNET用戶
二 / 打開**.asmx代碼視圖,寫入相關代碼,(此例代碼如下:)
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
namespace WS1
{
/// <summary>
/// Service1 的摘要說明
/// </summary>
[WebService(Namespace = "http://tech10.com.cn/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class getUsers : System.Web.Services.WebService
{
[WebMethod]
public DataSet SQLDB(string servername,string databasename,string uid,string pwd,string Query)
{
try
{
SqlConnection CS = new SqlConnection("server="+ servername +";database="+ databasename +";user id="+ uid +";password="+ pwd +"");
SqlDataAdapter myCommand = new SqlDataAdapter(Query, CS);
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet, "Results");
return myDataSet;
}
catch (Exception ex)
{
return DataError(ex);
}
}
//用來查詢Access數據庫的方法
[WebMethod]
public DataSet AccessDB(string dbname,string Query)
{
try
{
string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ this.Server.MapPath(dbname);
OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);
OleDbCommand myAccessCommand = new OleDbCommand(Query, myAccessConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
myAccessConn.Open();
DataSet myDataSet = new DataSet();
myDataAdapter.Fill(myDataSet, "Results");
myAccessConn.Close();
return myDataSet;
}
catch (Exception ex)
{
return DataError(ex);
}
}
//處理錯誤的方法:
public DataSet DataError(Exception ex)
{
DataSet errDS = new DataSet("Errors");
DataTable errTable = errDS.Tables.Add("Error");
errTable.Columns.Add("Message");
errTable.Rows.Add(new Object[] { ex.Message });
return errDS;
}
}
}
三 / 將其編譯並發布後,在IIS服務器上佈署一個虛擬目錄,如:http://127.0.0.1/ws/
打開IE,測試一下http://127.0.0.1/ws/getUsers.asmx
四 / 打開VS,再建立一個客戶端調用項目,可以是BS,也可以是CS......(在此例中為BS)項目名稱:Call_WS1
五 / 在項目名稱上點擊右鍵,選擇[添加WEB引用]在打開的對話框中,輸入http://127.0.0.1/ws/getUsers.asmx後確定她
六 / Default.aspx代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Call_WS1._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Call Web Serivce</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Get SQL DATA"
onclick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="GET ACCESS DATA"
onclick="Button2_Click" />
<asp:GridView ID="GridView1" runat="server" Width="100%">
</asp:GridView>
</div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</form>
</body>
</html>
七 / Default.aspx.cs代碼如下
using System;
using System.Collections;
using System.Configuration;
using System.Data;
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;
namespace Call_WS1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//myWS.Credentials = System.Net.CredentialCache.DefaultCredentials;
Call_WS1.WebReference.getUsers myget = new Call_WS1.WebReference.getUsers();
DataSet ds = myget.SQLDB("JPCTEST", "TestForKaoo", "sa", "10000", "select * from Users");
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();
Label1.Text = "SQL OK";
}
protected void Button2_Click(object sender, EventArgs e)
{
Call_WS1.WebReference.getUsers myget = new Call_WS1.WebReference.getUsers();
DataSet ds = myget.AccessDB("db1.mdb", "select * from Users");
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();
Label1.Text = "ACCESS OK";
}
}
}
注意:SQL服務器信息,表名及ACCESS之DB要存在,虛擬目錄(ws)的訪問權限為匿名,黙認為ASPNET用戶
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.