C# 建立、部署和調用WebService的簡單示例html
webservice 能夠用於分佈式應用程序之間的交互,和不一樣程序之間的交互。web
具體詳細用法可去查詢資料。下面開始建立一個簡單的webservice的例子。這裏我用的是Visual Studio 2013開發工具。sql
首先建立一個空的Web應用程序。(只是測試demo,我把webservice和winfrom建立在一個項目下了。)建立用4.5的!數據庫
選擇Web服務,點擊添加。一個簡單的webservice就建立完成了,接下來編寫兩個簡單的方法。windows
而後在這裏類裏面加入下面的方法安全
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。
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