WebService連接winfrom簡單實例

来源:https://www.cnblogs.com/debugnotes/archive/2019/04/13/10703656.html
-Advertisement-
Play Games

C# 創建、部署和調用WebService的簡單示例 webservice 可以用於分散式應用程式之間的交互,和不同程式之間的交互。 具體詳細用法可去查詢資料。下麵開始創建一個簡單的webservice的例子。這裡我用的是Visual Studio 2013開發工具。 首先創建一個空的Web應用程式 ...


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近有很多朋友去目前主流的大型互聯網公司面試(阿裡巴巴、京東、美團、滴滴),面試回來之後會發給我一些面試題。有些朋友輕鬆過關,拿到offer,但是有一些是來詢問我答案的。 其實本來真的沒打算寫這篇文章,主要是自己得記憶力不是很好,不像一些記憶力強的人,面試完以後,幾乎能把自己和麵試官的對話都給記下來 ...
  • 1 前言 由於Python的版本眾多,還有Python2和Python3的爭論,因此有些軟體包或第三方庫就容易出現版本不相容的問題。 通過 這個工具,就可以構建一系列 ,然後在每個環境中安裝需要的軟體包(配合 使用),這一系列的環境是相互隔離的。作為一個獨立的環境就不容易出現版本問題,還方便部署。 ...
  • 寫在前面:所有題目都是用python寫的,有一些題目懶得重頭寫,直接用python自帶的功能或庫造好的“輪子” 一、開始之前 1、只出現一次的數字 說明: 示例 1: 示例 2: 2、求眾數 示例 1: 示例 2: 3、搜索二維矩陣 II 示例: 現有矩陣 matrix 如下: [ [1, 4, 7 ...
  • 昨天補充: 編碼: Unicode ; utf-8 ; GBK 關係: 關鍵字:1. continue 終止當前迴圈,進行下一次迴圈 2. break 終止迴圈 題6解法2: 今日內容:Python的開發IDE—Pycharm IDE:Pycharm、eclipse pycharm比較好用點..>> ...
  • thinkphp框架,是一堆代碼(常量,方法,和類)的集合,框架是一個半成品的應用,還包含一些優秀的設計模式。 框架的使用,代碼風格不一樣,維護難,項目生命周期短,功能擴展存在局限,好處為,簡單,快捷,高效,不需要關註底層結構,專註於業務邏輯 zend framework,官方框架,yii框架,美國 ...
  • JVM 調優概述 性能定義 吞吐量 - 指不考慮 GC 引起的停頓時間或記憶體消耗,垃圾收集器能支撐應用達到的最高性能指標。 延遲 - 其度量標準是縮短由於垃圾啊收集引起的停頓時間或者完全消除因垃圾收集所引起的停頓,避免應用運行時發生抖動。 記憶體占用 - 垃圾收集器流暢運行所需要的記憶體數量。 調優原則 ...
  • 今天的文章是因為再給一個朋友講這個的時候隨手記錄下整理出來的。說白了就是把前輩們曾經給我吹過的我又吹了出去。 泛型:是C# FrameWork 2.0 時代 加入進來的,可以說對與Net開發人員來說泛型是無處不再的,喜歡看源碼的同學,可能會有發現,包括MVC裡面基本上也是有很多發泛型,還有很多設計模 ...
  • 索引: 目錄索引 一.API 列表 1.SetSegment 屬性,指示 根據條件 動態拼接 要修改的欄位 見如下示例. 二.API 單表-完整 方法 舉例 以 MySQL 為例,生成 SQL 如下: 蒙 2019-04-13 23:59 周六 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...