除了讓您建立 Web 網頁外,Microsoft Visual Studio 還能讓您建立使用 ASP.NET XML 的 Web 服務。在 Visual Studio 中建立 Web 服務類似於建立 Web 網頁。您也可以使用 Microsoft Visual Web Developer Web 開發工具,在您的本機電腦上或是本機或外部 UDDI 目錄中,參考和使用 Visual Web Developer 方案中的 Web 服務。在本逐步解說中,您會在一個方案中建立 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 服務
-
在 [方案總管] 中,以滑鼠右鍵按一下網站名稱 (http://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 服務
-
在 [檔案] 功能表上,按一下 [新網站]。
-
請在 [Visual Studio 安裝的範本] 下方,按一下 [ASP.NET 網站]。
-
按一下 [瀏覽]。
-
按一下 [本機 IIS]。
-
按一下 [預設的網站]。
-
按一下 [建立新 Web 應用程式]。
Visual Web Developer 便會建立新的 IIS Web 應用程式。
-
輸入 TemperatureWeb 的名稱。
-
按一下 [開啟]。
-
在 [語言] 清單中,按一下您想要操作的程式語言。
-
按一下 [確定]。
Visual Web Developer 會建立新的本機 IIS 網站,以及名為 Default.aspx 的新網頁。
Web 服務是可讓您在應用程式中參考的元件,因此,您必須建立 Web 服務的參考。
若要建立 Web 服務的參考
-
在 [方案總管] 中,以滑鼠右鍵按一下網站名稱,然後按一下 [加入 Web 參考]。
[加入 Web 參考] 對話方塊隨即出現,如以下螢幕擷取畫面所示。
-
在 [URL] 清單中,輸入下列 Web 服務的 URL,然後按一下 [移至]:
http://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
Tex: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 服務的偵錯。
注意事項 |
|---|
| 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 服務功能,建議您進一步探索下列各項:
工作
逐步解說:在 Visual Web Developer 中進行 Web 網頁偵錯
參考
XML Web Service 中的 @ WebService 指示詞
<webServices> 項目
概念
使用 ASP.NET 建立之 XML Web Service 的設計方針
為使用 ASP.NET 建立的 XML Web Service 設定安全性
其他資源
建立 Visual Web Developer 網站導覽
使用 ASP.NET 的 XML Web Service