1.創建WebService
以VS2013為例,打開VS2013,選擇新建項目,Web分類下的“ASP.NET Web空應用程序”,注意選擇上端的.net framework版本,這里我們選擇的是4.0,然后確定。如下圖:
新建好項目后,在項目中添加一個新建項——Web服務,如下圖:
雙擊打開這個.asmx文件,我們可以看到對應.cs文件的代碼,里面有一個默認HelloWorld函數,我們在其中手動添加一個Sum求和函數,最終代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; namespace WebServiceTest { /// <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 WebService1 : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } /// <summary> /// 獲取操作數a,b相加的和 /// </summary> /// <param name="a">操作數a</param> /// <param name="b">操作數b</param> /// <returns></returns> [WebMethod] public string Sum(int a, int b) { return string.Format("{0}", a + b); } } }
此時,一個簡單的WebService程序已經編寫完成,生成代碼,運行,會在瀏覽器中看到如下結果:
點擊其中的HelloWorld和Sum函數,就可以調試相應的函數功能。
2.發布該WebService
在該項目上右鍵,選擇發布,然后在彈出的對話框中進行如下操作:
隨便寫入一個配置文件名稱,點擊下一步
之后,依次點擊下一步,最后點擊發布。
發布完成后,可以在目標位置D:\WebSiteRoot\WebServiceTest路徑下看到相應的文件。
然后再配置IIS
打開IIS管理器,選擇網站->右鍵添加網站
注:(1)網站名稱隨便填寫,應用池選擇,選擇程序運行需要的.Net FrameWork版本,一定要選擇和新建項目是相同的版本
(2)物理路徑,選擇上面WebService發布的程序的路徑(D:\WebSiteRoot\WebServiceTest)
(3)綁定,IP地址不填,或者填寫本機IP地址,修改端口,端口不能其他程序使用過
如下圖所示:
發布完成后訪問方式為:http://192.168.2.123:8666/Service.asmx 或 http://localhost:8008/Service.asmx如果出現下圖所示,說明發布成功。
有時候也會遇到很多報錯,下面將這些錯誤整理一下:
報錯1:目錄瀏覽問題:
這個錯誤可以忽略不修改,也可以根據網頁中的提示修改:
解決方法如下圖:
報錯2:
打開WebService1.asmx出錯, “分析器錯誤消息: 未能創建類型“WebService1.Service1”。
解決:首先必須先在IIS在創建一個虛擬目錄(這個就不用多說了吧),如果這個時候直接在瀏覽器里調用WebService就會出現上述錯誤。原因是必須為上面 創建的虛擬目錄創建單獨的應用程序,方法是右擊虛擬目錄,點擊“添加應用程序...”,目錄與剛才的虛擬目錄物理路徑要一致,添加完成后就可以正常使用 WebService了!
報錯3:
HTTP 錯誤 404.3 - Not Found
由於擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程序。如果應下載文件,請添加 MIME 映射。
解決辦法如下:
iis7 :控制面板-》打開或關閉windows功能-》Internet信息服務-》萬維網服務-》應用程序開發功能,勾選上“.net擴展性”和“ASP.NET”,保存后,重啟IIS服務器即可。
iis8:控制面板-》打開或關閉windows功能-》Internet信息服務-》萬維網服務-》應用程序開發功能,勾選上“.net Extensibility3.5” 及等帶.net的選項,保存后,重啟IIS服務器即可。
iis默認安裝的時候是沒有勾選這些選項的。
報錯4:配置錯誤
說明: 在處理向該請求提供服務所需的配置文件時出錯。請檢查下面的特定錯誤詳細信息並適當地修改配置文件。
分析器錯誤消息: 無法識別的屬性“targetFramework”。請注意屬性名稱區分大小寫。
源錯誤:
行 24: 設置為 true。 行 25: --> 行 26: <compilation debug="true" targetFramework="4.0"/> 行 27: <!-- 行 28: 通過 <authentication> 節可以配置 ASP.NET 使用的 |
源文件: E:\NET\CRM.Web\web.config 行: 26
版本信息: Microsoft .NET Framework 版本:2.0.50727.4961; ASP.NET 版本:2.0.50727.4955
解決方法:
該錯誤是由於IIS中選擇的.net framework版本和項目中的不一致造成的,修改IIS中的版本即可。
如果發現選擇應用池時沒有對應的framework版本,擇在左側的“應用程序池”中新建對應的版本即可。
問題5:
HTTP 錯誤 500.21 - Internal Server Error
處理程序“WebServiceHandlerFactory-Integrated”在其模塊列表中有一個錯誤模塊“ManagedPipelineHandler”
解決方法:
導致這種問題的原因是ASP.net沒有成功注冊到IIS中,很有可能是先安裝.Net Framework,然后安裝IIS
管用員權限進入cmd命令提示符界面,執行命令"C:\Windows\Microsoft.NET\Framework\v4.0.30319",
運行:
aspnet_regiis.exe -i
問題6:
解決方法:
這個問題網上的解決方法很多,我試了一下都沒用。
我的解決辦法是,參照發布的時候,重新在IIS中新建了一個網站,選擇了相應的路徑什么的,就好了。