WebService連接winfrom簡單實例


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C# 創建、部署和調用WebService的簡單示例

webservice 可以用於分布式應用程序之間的交互,和不同程序之間的交互。

具體詳細用法可去查詢資料。下面開始創建一個簡單的webservice的例子。這里我用的是Visual Studio 2013開發工具。

首先創建一個空的Web應用程序。(只是測試demo,我把webservice和winfrom創建在一個項目下了。)創建用4.5的!

選擇Web服務,點擊添加。一個簡單的webservice就創建完成了,接下來編寫兩個簡單的方法。

然后在這里類里面加入下面的方法

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Data.SqlClient;

using System.Data;

 

namespace WebServiceDemo

{

    /// <summary>

    /// WebServiceDemo1 的摘要說明

    /// </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 WebServiceDemo1 : System.Web.Services.WebService

    {

 

        [WebMethod]

        public string HelloWorld()

        {

            return "Hello World";

        }

        //如果方法需要通過webservice的地址進行調用,那就必須在方法上面打上 [WebMethod] 的特性標簽,否則是無法通過webservice訪問到的。Description 是方法的描述。

        [WebMethod(Description = "求和方法")]

        public int add(string a, string b)

        {

            int sum = 0;

            sum = Convert.ToInt32(a) + Convert.ToInt32(b);

            return sum;

        }

        //定義數據庫連接對象

        private SqlConnection con;

        [WebMethod]

        public DataSet GetInfo(string strSql)

        {

            string sqlConnect = "initial catalog =Northwind; server =127.0.0.1; uid = sa; pwd =sa";

            con = new SqlConnection(sqlConnect);

            con.Open();

            SqlDataAdapter da = new SqlDataAdapter(strSql, con);

            DataSet ds = new DataSet();

            da.Fill(ds);

            return ds;

        }

        [WebMethod]

        public bool testConnect()

        {

            try

            {

                //數據庫連接,定義連接對象和連接字符串並打開

                string sqlConnect = "initial catalog =Northwind; server =127.0.0.1; uid = sa; pwd =sa";

                con = new SqlConnection(sqlConnect);

                con.Open();

                return true;

            }

            catch

            {

                return false;

            }

        }

    }

}

 

PS:如果方法需要通過webservice的地址進行調用,那就必須在方法上面打上 [WebMethod] 的特性標簽,否則是無法通過webservice訪問到的。Description 是方法的描述。

然后運行一下,就可以看到上圖的方法了,訪問 webservice 就可以根據地址欄里的地址進行調用 webservice 的方法了。

 

但是這樣如何讓其他應用程序通過網絡進行訪問呢?那就需要部署到服務器了。

下面的演示我是部署在本機的,不過服務器部署也是一樣的。網站部署需要用到 IIS,而我這里是已經開啟的,如果沒有開啟的話,可以通過 開始菜單 > 控制面板 > 程序 > 啟用或關閉 windows 功能 開啟。具體的可以網上搜索一下,這里就不做過多的介紹。

 

開啟 IIS 之后,先把剛才的 webservice 發布之后,然后打開 IIS 管理器。

如果出現各種報錯,自行查資料!!!。

 

 

 

 

 

 

設置不用改,繼續下一步。然后點擊發布。

 

這樣就發布完成了,現在打開 IIS 管理器,(運行輸入 inetmgr  如果打不開證明ISS沒有開啟)然后選擇網站,點擊添加網站。

 

 

 

輸入網站的名稱、IP地址(本機可以不輸入IP地址)和端口,選擇文件的路徑,然后點擊確定,網站就創建完成了。

 

當然,並不一定就立馬可以使用了,這之中會出現很多的錯誤,下面是我碰到的一些錯誤和一些解決方法。

 

 

這個錯誤是因為文件的訪問權限不夠的問題。解決方法就是點擊編輯權限。

然后選擇安全欄,點擊編輯。

然后點擊添加一個用戶,把權限設置為允許。或者使用下面這種方法:

選擇網站,然后選中身份驗證,點擊基本設置。

 

 

選擇連接為。

然后選擇特定用戶,點擊設置,輸入本機的用戶名和密碼,點擊確定就可以了。然后可以點擊測試設置看看效果。

 

 

這個錯誤的原因是在安裝Framework v4.0之后,再啟用IIS,導致Framework沒有完全安裝。

解決方法就是:開始菜單 > 命令提示符(管理員),然后輸入並執行   %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i   命令行。

 

 

這個問題的是因為,應用程序池設置的原因,開始新建網站的時候沒有選擇應用程序池,默認為v2.0的版本,不支持 Framework 4.5。

解決方法就是選擇應用程序池,然后改為v4.0的版本,管道模式設置為集成。

這個錯誤的原因是由於系統目錄下的Temp目錄無相應的權限所致。

解決方法就是進入 C盤 windows 目錄下的 Temp 目錄,右鍵屬性 >  安全欄 > 編輯 > IIS_IUSRS 的權限設置為完全控制。

 

 

這個錯誤的原因是因為沒有配置網站的默認文檔。

解決方法就是選中網站,點擊默認文檔,然后添加一個默認的頁面,即應用程序的起始頁面。

然后,處理了眾多問題之后,總算是部署成功了。

 

 

 

 

 

 

在URL欄輸入部署的網站地址,然后點擊轉到,就可以看到下面的方法內容了,然后輸入web引用名稱,點擊添加引用。

引用添加完成,下面就開始調用webservice。

二創建winfrom窗口調用

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace MyWebService

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

         //初始化webservice

        WebReference.WebServiceDemo local_S = new WebReference.WebServiceDemo();

        //調用webservice連接數據庫的方法

        private void button1_Click(object sender, EventArgs e)

        {

            if (local_S.testConnect())

            {

                MessageBox.Show("連接成功");

            }

            else

            {

                MessageBox.Show("連接失敗");

            }

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

        }

        //調用webservice查詢數據的方法

        private void button2_Click(object sender, EventArgs e)

        {

            string strsql = "select * from Customer";

            DataSet ds = local_S.GetInfo(strsql);

            dataGridView1.DataSource = ds.Tables[0];

        }

    }

}

 

 

重新發布webservice,發布之后之前添加的默認文檔可能會刪除。重新按照之前的步驟加入即可。然后刪除之前的webservice服務應用。重新引用webservice服務。

     兩個按鈕事件

 

  public Form1()

        {

            InitializeComponent();

        }

         //初始化webservice

        WebReference.WebServiceDemo local_S = new WebReference.WebServiceDemo();

        //調用webservice連接數據庫的方法

        private void button1_Click(object sender, EventArgs e)

        {

            if (local_S.testConnect())

            {

                MessageBox.Show("連接成功");

            }

            else

            {

                MessageBox.Show("連接失敗");

            }

        }

 

 

        //調用webservice查詢數據的方法

        private void button2_Click(object sender, EventArgs e)

        {

            string strsql = "select * from Customer";

            DataSet ds = local_S.GetInfo(strsql);

            dataGridView1.DataSource = ds.Tables[0];

        }

 

 

 

 

表自己建一個

 

 

簡單的webserver在winfrom中的使用到這里就結束了。

聯系QQ同微信 78474580


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM