逐步解說:在 Visual Web Developer 中建立和使用 ASP.NET Web 服務
更新:2007 年 11 月
除了讓您建立 Web 網頁外,Microsoft Visual Studio 還能讓您建立使用 ASP.NET XML 的 Web 服務。在 Visual Studio 中建立 Web 服務類似於建立 Web 網頁。您也可以使用 Microsoft Visual Web Developer Web 開發工具,在您的本機電腦上或是本機或外部 UDDI 目錄中,參考和使用 Visual Web Developer 方案中的 Web 服務。在本逐步解說中,您會在一個方案中建立 Web 服務並用於另一個方案。
逐步解說將說明的工作包括:
在 Visual Web Developer 中建立簡單的 XML Web Service。
建立使用 Web 服務的不同網站。
必要條件
若要完成這個逐步解說,您必須要有:
- 在本機電腦上安裝 Microsoft Internet Information Services (IIS)。
在 IIS 根目錄下建立 Web 服務
依照下列步驟建立新的 Web 服務和網頁。
注意事項: |
---|
在這個逐步解說中必須使用 IIS 網站。 |
若要建立 Web 服務
開啟 Visual Web Developer。
在 [檔案] 功能表上,按一下 [新網站]。
[新網站] 對話方塊隨即出現。
請在 [Visual Studio 安裝的範本] 下方,按一下 [ASP.NET Web 服務]。
按一下 [瀏覽]。
按一下 [本機 IIS]。
按一下 [預設的網站]。
按一下 [建立新 Web 應用程式]。
Visual Web Developer 便會建立新的 IIS Web 應用程式。
輸入 TemperatureWebService 的名稱。
按一下 [開啟]。
[新網站] 對話方塊隨即出現,且最右邊的 [位置] 清單中會顯示新網站的名稱。位置包括通訊協定 (http://) 和位置 (localhost),這表示您正在使用本機 IIS 網站。
在 [語言] 清單中,按一下您想要操作的程式語言。
您所選擇的程式語言將會成為網站的預設語言,不過,您可以用不同的程式語言來建立網頁和元件,以在相同 Web 應用程式中使用一種以上的語言。如需如何使用不同語言建立元件的詳細資訊,請參閱 ASP.NET 網站中的共用程式碼資料夾。
按一下 [確定]。
Visual Web Developer 會建立新的 Web 服務,並開啟名為 Service 的新類別,這是預設的 Web 服務。不過,在下列程序中,您會以指定之名稱建立新的 Web 服務,且不會使用 Service 類別。
關閉 Service 類別。
建立 Web 服務
您會建立在華氏和攝氏之間換算溫度的 Web 服務。
若要建立 Web 服務
在 [方案總管] 中,以滑鼠右鍵按一下網站名稱 (https://localhost/TemperatureWebService),然後按一下 [加入新項目]。
請在 [Visual Studio 安裝的範本] 下方,按一下 [Web 服務],然後在 [名稱] 方塊中,輸入 Convert。
確認已選取 [將程式碼置於個別檔案中] 核取方塊,然後按一下 [加入]。
Visual Web Developer 會建立由兩個檔案所組成的新 Web 服務。Convert.asmx 檔就是可被叫用 (Invoke) 以呼叫 Web 服務方法的檔案,該檔案會指向 Web 服務的程式碼。程式碼本身是位在 App_Code 資料夾內的類別檔案中 (Convert.vb、Convert.cs 或 Convert.jsl,這是根據程式語言而定)。程式碼檔包含 Web 服務的範本。程式碼檔包括 Web 服務方法的某些程式碼。
您將在 Web 服務中建立兩個方法。第一個方法會將華氏溫度換算為攝氏,第二個方法則會將攝氏溫度換算為華氏。
若要建立換算方法
將下列程式碼加入類別內部的 HelloWorld 方法之後:
<System.Web.Services.WebMethod()> _ Public Function FahrenheitToCelsius(ByVal Fahrenheit As Double) _ As Double Return ((Fahrenheit - 32) * 5) / 9 End Function <System.Web.Services.WebMethod()> _ Public Function CelsiusToFahrenheit(ByVal Celsius As Double) _ As Double Return ((Celsius * 9) / 5) + 32 End Function
[System.Web.Services.WebMethod()] public double FahrenheitToCelsius(double Fahrenheit) { return ((Fahrenheit - 32) * 5) / 9; } [System.Web.Services.WebMethod()] public double CelsiusToFahrenheit(double Celsius) { return ((Celsius * 9) / 5) + 32; }
請注意,函式名稱前面會有屬性 ([System.Web.Services.WebMethod()] 或 <System.Web.Services.WebMethod()>) 做為函式宣告的一部分。
在您已輸入函式後,請儲存檔案。
現在,您可以在 Visual Web Developer 中測試 Web 服務。
若要測試 Web 服務
在 [方案總管] 中,按一下 Convert.asmx,然後按 CTRL+F5。
如此便會叫用 Web 服務,且瀏覽器中會出現一個顯示 Web 服務所公開 (Expose) 之方法的網頁。
按一下 [CelsiusToFahrenheit],這會叫用該方法。
提示您輸入 CelsiusToFahrenheit 方法之參數值的網頁隨即出現。
在 [攝氏] 方塊中,輸入 100,然後按一下 [叫用]。
新視窗隨即出現,其中會顯示叫用 CelsiusToFahrenheit 方法時由 Web 服務所傳回的 XML。值 [212] 會顯示在 XML 中。
關閉包含方法結果的瀏覽器。
在原始瀏覽器中,按一下 [上一頁] 以回到方法清單。
按一下 [FahrenheitToCelsius] 並進行測試,確認方法傳回您所預期的結果。
如果您輸入 212,則 FahrenheitToCelsius 方法將傳回 [100]。
關閉瀏覽器。
您現在已完成建立 Web 服務,下一個步驟便是使用該服務。
使用 Web 服務
現在您已經有 Web 服務,接下來您會建立一個網站,以在其中參考和使用所建立的 Web 服務。在這個逐步解說中,您將建立包含一個網頁的不同網站,您會在該網頁中開始剛才所建立的 Web 服務方法。
若要建立網站以使用 Web 服務
在 [檔案] 功能表上,按一下 [新網站]。
請在 [Visual Studio 安裝的範本] 下方,按一下 [ASP.NET 網站]。
按一下 [瀏覽]。
按一下 [本機 IIS]。
按一下 [預設的網站]。
按一下 [建立新 Web 應用程式]。
Visual Web Developer 便會建立新的 IIS Web 應用程式。
輸入 TemperatureWeb 的名稱。
按一下 [開啟]。
在 [語言] 清單中,按一下您想要操作的程式語言。
按一下 [確定]。
Visual Web Developer 會建立新的本機 IIS 網站,以及名為 Default.aspx 的新網頁。
加入 Web 服務做為元件
Web 服務是可讓您在應用程式中參考的元件,因此,您必須建立 Web 服務的參考。
若要建立 Web 服務的參考
在 [網站] 功能表中,按一下 [加入Web 參考]。
[加入 Web 參考] 對話方塊隨即出現,如以下螢幕擷取畫面所示。
加入 Web 參考對話方塊
在 [URL] 清單中,輸入下列 Web 服務的 URL,然後按一下 [移至]:
https://localhost/TemperatureWebService/Convert.asmx
當 Visual Web Developer 找到 Web 服務時,Web 服務的相關資訊便會顯示在 [加入 Web 參考] 對話方塊中。
注意事項: 如果您無法加入 Web 服務的參考,可能是因為 Proxy 伺服器沒有正確設定。請在 Microsoft Internet Explorer 的 [工具] 功能表中,按一下 [網際網路選項]、按一下 [連線],然後按一下 [區域網路設定]。選取 [近端網址不使用 Proxy] 核取方塊。此外,將 Proxy 伺服器位址設定為 Proxy 伺服器的正確名稱,而不要允許 Internet Explorer 偵測 Proxy 伺服器。如需詳細資訊,請連絡網路系統管理員。
按一下其中一個方法連結。
方法的測試頁隨即出現。
按一下 [加入參考]。
Visual Web Developer 會建立 App_WebReferences 資料夾,並在其中加入新 Web 參考的資料夾。根據預設,對應至其伺服器名稱的命名空間 (Namespace) 會指定給 Web 參考 (在此案例中為 localhost)。請記下 Web 參考命名空間的名稱。Visual Web Developer 會在資料夾中加入參考 Web 服務的 .wsdl 檔,另外還會加入支援的檔案,例如,包含 Web 服務所在位置資訊的探索檔 (.disco 和 .discomap)。
注意事項: 如果 Web 服務的伺服器名稱包含無法用來做為類別名稱的字元,例如,短破折號 (-),則 Visual Web Developer 會將這些字元轉換成底線字元 (_)。因此,在 Visual Web Developer 中之 Web 服務的命名空間可能不會與伺服器名稱完全相符。
您現在可以使用 Web 服務。在本逐步解說中,您會將控制項加入至 Default.aspx,然後進行控制項的程式設計,將指定的溫度換算成華氏和攝氏。當網頁執行時,看起來會如下圖所示:
溫度換算畫面
若要呼叫 Web 服務方法
開啟 Default.aspx 頁面,並切換到設計檢視。
從 [工具箱] 的 [標準] 群組中,將下列控制項拖曳到頁面上,並依照指示設定其屬性:
控制項
屬性
Textbox
ID:TemperatureTextbox
Text:(空白)
Button
ID:ConvertButton
Text:Convert
Label
ID:FahrenheitLabel
Text:(空白)
Label
ID:CelsiusLabel
Text:(空白)
或者,也可以將文字加入至頁面做為標題。
在此逐步解說中,頁面的配置並不重要。
按兩下 ConvertButton,為其 Click 事件建立事件處理常式。
請確定您的事件處理常式程式碼符合下列範例中的程式碼。
Dim wsConvert As New localhost.Convert() Dim temperature As Double temperature = System.Convert.ToDouble(TemperatureTextbox.Text) FahrenheitLabel.Text = "Fahrenheit To Celsius = " & _ wsConvert.FahrenheitToCelsius(temperature).ToString() CelsiusLabel.Text = "Celsius To Fahrenheit = " & _ wsConvert.CelsiusToFahrenheit(temperature).ToString()
protected void ConvertButton_Click(object sender, EventArgs e) { localhost.Convert wsConvert = new localhost.Convert(); double temperature = System.Convert.ToDouble(TemperatureTextbox.Text); FahrenheitLabel.Text = "Fahrenheit To Celsius = " + wsConvert.FahrenheitToCelsius(temperature).ToString(); CelsiusLabel.Text = "Celsius To Fahrenheit = " + wsConvert.CelsiusToFahrenheit(temperature).ToString(); }
按 CTRL+F5 執行頁面。
在文字方塊中輸入值,例如 100,然後按一下 [換算]。
網頁上會顯示將溫度值換算成華氏和攝氏的結果。
偵錯 Web 服務
您可以使用偵錯 Web 網頁的相同方式,進行 Web 服務的偵錯。
注意事項: |
---|
Visual Web Developer Express 版和 Visual Studio Standard 版不支援在參考的網頁中逐步執行 Web 服務。如果您是使用 Visual Web Developer Express 版或 Visual Studio Standard 版,請略過本章節及後續的章節。如需如何偵錯網站的詳細資訊,請參閱逐步解說:在 Visual Web Developer 中進行 Web 網頁偵錯。 |
若要開始進行,您必須先設定包含要啟用偵錯之 Web 服務的網站。
若要在 Web 服務網站中啟用偵錯
在 [檔案] 功能表上,按一下 [開啟網站]。
按一下 [本機 IIS]。
按一下 [TemperatureWebService],然後按一下 [開啟]。
在 [網站] 功能表中,按一下 [ASP.NET 組態],以開啟 [網站管理工具]。
注意事項: 如果這是您第一次執行 [網站管理工具],在該工具顯示前可能會有稍許延遲。
按一下 [應用程式],然後按一下 [應用程式組態]。
請在 [偵錯及追蹤] 下方,按一下 [設定偵錯及追蹤]。
選取 [啟用偵錯] 核取方塊。
[網站管理工具] 會建立網站的 Web.config 檔,並設定組態選項以啟用偵錯。
注意事項: 若要在 [方案總管] 中查看 Web.config 檔,請按一下網站名稱,然後在 [方案總管] 工具列中,按一下 [重新整理]。
關閉 [網站管理工具]。
您現在必須為使用 Web 服務的網站啟用偵錯。
若要在網站中啟用偵錯
開啟 TemperatureWeb 網站。
在 [網站] 功能表中,按一下 [ASP.NET 組態],以開啟 [網站管理工具]。
依序按一下 [應用程式]、按一下 [應用程式組態]、在 [偵錯及追蹤] 下方按一下 [設定偵錯及追蹤],然後選取 [啟用偵錯] 核取方塊。
關閉 [網站管理工具]。
注意事項: 若要在 [方案總管] 中查看 Web.config 檔,請選取網站名稱,然後在 [方案總管] 工具列中,按一下 [重新整理]。
在 [方案總管] 中,以滑鼠右鍵按一下 [Default.aspx],然後按一下 [檢視程式碼]。
Visual Web Developer 會開啟網頁的程式碼檔。
將指標放置在下一行中:
temperature = System.Convert.ToDouble(TemperatureTextbox.Text)
double temperature = System.Convert.ToDouble(TemperatureTextbox.Text);
按 F9 在該行設定中斷點。
測試偵錯
設定好網站和 Web 服務的偵錯後,您現在可以嘗試使用偵錯。您會在 Default.aspx 頁面中開始逐步執行程式碼,直到程式碼叫用 Web 服務。偵錯工具會切換至 Web 服務,並繼續逐步執行程式碼。
若要偵錯網頁和 Web 服務
按 F5 執行 Default.aspx 頁面與偵錯。
頁面會出現在瀏覽器中。
在方塊中輸入值,例如,100,然後按一下 [換算]。
Visual Web Developer 會開始執行頁面的程式碼,但是會在包含中斷點的程式碼行停止並反白顯示該行。
按 F11 可執行至下一行。
再按一次 F11。
由於下一行會叫用 Web 服務,因此偵錯工具會逐步執行 Web 服務,並在 FahrenheitToCelsius 方法的第一行停止。
繼續按 F11。
偵錯工具會逐步執行方法的其他部分,然後回到呼叫頁面。如果您繼續逐步執行,則偵錯工具會逐步執行回 Web 服務和 CelsiusToFahrenheit 方法。
關閉瀏覽器,如此也會關閉偵錯工具。
後續步驟
在本逐步解說中,說明了建立非常簡單之 Web 服務並將其用於 ASP.NET 應用程式中的基本原則,如果您想試驗其他更複雜的 Web 服務功能,建議您進一步探索下列各項:
了解當您執行 XML Web Service 呼叫時所發生的處理作業。
如需詳細資訊,請參閱 XML Web Service 存留期分析。
了解如何使用 XML Web Service。
如需詳細資訊,請參閱 XML Web Service 案例。
建立可提供比這個逐步解說之簡單 Web 服務更複雜的功能之 XML Web Service,例如,您可以建立並鏈結非同步的 (Asynchronous) Web 服務方法呼叫、使用交易、保護 Web 服務的安全,以及設定 Microsoft Windows 驗證的 Web 服務等等。
如需詳細資訊,請參閱使用 ASP.NET 的 XML Web Service。
了解 XML Web Service 所提供的特定語言功能和特定技術功能。
如需詳細資訊,請參閱 XML Web Services in Visual FoxPro、以 Managed 程式碼建立之 Web 服務的程式設計簡介、Web 服務 (Visual Basic 中的 [如何?])、XML Web Services Created with ATL Server 和建立和存取 Web 服務逐步解說。
請參閱
工作
逐步解說:在 Visual Web Developer 中進行 Web 網頁偵錯
概念
使用 ASP.NET 建立之 XML Web Service 的設計方針
為使用 ASP.NET 建立的 XML Web Service 設定安全性
參考
XML Web Service 中的 @ WebService 指示詞