WebService的建立及使用

 

為什麼要使用WebService?我的目的是要讓Window AP可以在防火牆外部連接到SQL Server並取得資料。所以建立了WebService當中介介面,不需將SQL Server的服務直接曝露對外。

此例為Window Form透過WebService取得NorthwindCustomers資料並填入DataGridView

  

  

1. 新增專案 C# Web ASP.Net Web Service應用程式

2. 建立WebMethod
 

 

namespace SQLWebService

{

    /// <summary>

    ///Service1 的摘要描述

    /// </summary>

    [WebService(Namespace = "http://tempuri.org/")]

    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

    [System.ComponentModel.ToolboxItem(false)]

    // 若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務,請取消註解下一行。

    // [System.Web.Script.Services.ScriptService]

    public class Service1 : System.Web.Services.WebService

    {

        [WebMethod]

        public string HelloWorld()

        {

            return "Hello World";

        }

 

        [WebMethod]

        public DataSet GetDate()

        {

            SqlConnection connection = new SqlConnection("User ID=sa;password=test;Initial Catalog=Northwind;Data Source=192.168.1.1");

            SqlDataAdapter CustDataAdapter = new SqlDataAdapter("SELECT * FROM Customers ORDER BY CustomerID", connection);

            DataSet CustDataSet = new DataSet();

            connection.Open();

            CustDataAdapter.Fill(CustDataSet);

            connection.Close();

            return CustDataSet;

        }

    }

}

 

3. 建置 發行 →目標位置先填http://localhost/SQLWebService/ (SQLWebService為自訂路徑,locahostIIS需正常運作中)

4. IE測試開啟http://localhost/SQLWebService/ ,如下圖畫面表示服務正常

 

5. 關閉專案

6. 新增一Window Form專案

7. 加入服務參考

 

 

8. 位址填入http://localhost/SQLWebService/service1.asmx ,按Enter後,下方會出現服務名稱Service1,填入命名空間,可保持預設名稱ServiceReference1亦可。

 

9. 編輯程式,需先using 本程式的namespace.本程式的ServiceReference名稱(即上圖的命名空間)

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using TEST.ServiceReference1;

 

namespace TEST

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            Service1SoapClient MyService = new Service1SoapClient();

            this.dataGridView1.DataSource = MyService.GetDate().Tables[0];

        }

    }

}

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Data;

using System.Data.SqlClient;

arrow
arrow
    全站熱搜

    adamschen9921 發表在 痞客邦 留言(0) 人氣()