創建WebService
打開VS,新建空項目,注意選擇.NET Framework的版本.這里我選擇的是.NET Framework 4
新建好項目后,在項目中添加一個WebService項
打開這個文件,我們可以看到,代碼如下

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; namespace CalculateService { /// <summary> /// WebService1 的摘要說明 /// </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 CalCulService : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } } }
將HellowWorld這段代碼刪除,修改后如下

public class CalCulService : System.Web.Services.WebService { [WebMethod] public int Sum(int a, int b) { return a + b; } [WebMethod] public int Sub(int a, int b) { return a - b; } [WebMethod] public double Mult(double a, double b) { return a * b; } [WebMethod] public double Div(double a, double b) { return a / b; } }
此時,我們已經完成這個WebService的代碼部分,生成項目,運行WebService1.asmx,即可看到服務方法。
查看詳細信息(方法,參數等)
接下來我們要將這個WebService打包發布。
發布到IIS
在項目上點擊右鍵,點擊菜單中的發布,進入發布web對話框,點擊下拉菜單選擇新建配置文件 config1
目標位置: E:\calcul
下一步,發布
完成以上步驟后,我們可以在E:\calcul文件夾內看到生成的以下文件
配置IIS
在網站(默認網站或者自己建的網站huyWeb)下,添加虛擬目錄
瀏覽網站。
可能遇到的錯誤:目錄問題
問題2:打開WebService1.asmx出錯, “分析器錯誤消息: 未能創建類型“WebService1.Service1”。
解決:首先必須先在IIS在創建一個虛擬目錄,如果這個時候直接在瀏覽器里調用WebService就會出現上述錯誤。原因是必須為上面 創建的虛擬目錄創建單獨的應用程序,方法是右擊虛擬目錄,點擊“添加應用程序...”,目錄與剛才的虛擬目錄物理路徑要一致,添加完成后就可以正常使用 WebService了!
然后設置其默認文檔為WebService1.asmx。
使用WebService
打開vs,新建項目 Asp.net Web應用程序,項目中添加web窗體。在項目右鍵 添加服務引用,
單擊高級—添加Web引用。
在URL中輸入我們發布的WebService的URL地址,系統會自動搜索到服務.並且為Web引用設置一個引用名.此引用名將是我們在項目中引用這個服務的命名空間。
點擊添加引用,完成。
接下來,我們在WebForm1的cs文件中寫如下代碼
huyService.WebService1 cal = new huyService.WebService1(); int a = 14; int b = 5; Response.Write(cal.Sum(a, b).ToString());
VS自帶webservice調試工具,位置:C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\WcfTestClient.exe
使用WSDL工具生成WebService服務類
WebService有兩種使用方式,一種是直接通過添加服務引用,另一種則是通過WSDL生成。既然有直接引用的方式,為什么還要通過WSDL生成呢? 因為通過WSDL生成,就只有一個.cs 文件,便於管理,更簡潔。
電腦C盤搜索: wsdl.exe。進到wsdl所在的目錄,然后cmd,wsdl /language:c# /n:XYS.MISS.Photo.PhotoAdmin /out:d:\Temp\TestService.cs D:\Temp\TestService.wsdl
在d:/Temp下就會產生一個TestService.cs 文件
- /language:默認為C#語言,輸出語言
- /n:mynamespace namespace
- /out:myProxyClass.cs 輸出文件名
注意:D:\Temp\TestService.wsdl 是wsdl路徑,可以是url路徑:http://localhost/Temp/Test.asmx?wsdl
【直接只輸入 wsdl 回車,看更多參數的用法】也可直接看:根據WSDL生成代理類方式
更多參考:C# 利用VS自帶的WSDL工具生成WebService服務類