開發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用戶
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章