逐步解說:在 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 服務

  1. 開啟 Visual Web Developer。

  2. 在 [檔案] 功能表上,按一下 [新網站]。

    [新網站] 對話方塊隨即出現。

  3. 請在 [Visual Studio 安裝的範本] 下方,按一下 [ASP.NET Web 服務]。

  4. 按一下 [瀏覽]。

  5. 按一下 [本機 IIS]。

  6. 按一下 [預設的網站]。

  7. 按一下 [建立新 Web 應用程式]。

    Visual Web Developer 便會建立新的 IIS Web 應用程式。

  8. 輸入 TemperatureWebService 的名稱。

  9. 按一下 [開啟]。

    [新網站] 對話方塊隨即出現,且最右邊的 [位置] 清單中會顯示新網站的名稱。位置包括通訊協定 (http://) 和位置 (localhost),這表示您正在使用本機 IIS 網站。

  10. 在 [語言] 清單中,按一下您想要操作的程式語言。

    您所選擇的程式語言將會成為網站的預設語言,不過,您可以用不同的程式語言來建立網頁和元件,以在相同 Web 應用程式中使用一種以上的語言。如需如何使用不同語言建立元件的詳細資訊,請參閱 ASP.NET 網站中的共用程式碼資料夾

  11. 按一下 [確定]。

    Visual Web Developer 會建立新的 Web 服務,並開啟名為 Service 的新類別,這是預設的 Web 服務。不過,在下列程序中,您會以指定之名稱建立新的 Web 服務,且不會使用 Service 類別。

  12. 關閉 Service 類別。

建立 Web 服務

您會建立在華氏和攝氏之間換算溫度的 Web 服務。

若要建立 Web 服務

  1. 在 [方案總管] 中,以滑鼠右鍵按一下網站名稱 (https://localhost/TemperatureWebService),然後按一下 [加入新項目]。

  2. 請在 [Visual Studio 安裝的範本] 下方,按一下 [Web 服務],然後在 [名稱] 方塊中,輸入 Convert。

  3. 確認已選取 [將程式碼置於個別檔案中] 核取方塊,然後按一下 [加入]。

    Visual Web Developer 會建立由兩個檔案所組成的新 Web 服務。Convert.asmx 檔就是可被叫用 (Invoke) 以呼叫 Web 服務方法的檔案,該檔案會指向 Web 服務的程式碼。程式碼本身是位在 App_Code 資料夾內的類別檔案中 (Convert.vb、Convert.cs 或 Convert.jsl,這是根據程式語言而定)。程式碼檔包含 Web 服務的範本。程式碼檔包括 Web 服務方法的某些程式碼。

您將在 Web 服務中建立兩個方法。第一個方法會將華氏溫度換算為攝氏,第二個方法則會將攝氏溫度換算為華氏。

若要建立換算方法

  1. 將下列程式碼加入類別內部的 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()>) 做為函式宣告的一部分。

  2. 在您已輸入函式後,請儲存檔案。

現在,您可以在 Visual Web Developer 中測試 Web 服務。

若要測試 Web 服務

  1. 在 [方案總管] 中,按一下 Convert.asmx,然後按 CTRL+F5。

    如此便會叫用 Web 服務,且瀏覽器中會出現一個顯示 Web 服務所公開 (Expose) 之方法的網頁。

  2. 按一下 [CelsiusToFahrenheit],這會叫用該方法。

    提示您輸入 CelsiusToFahrenheit 方法之參數值的網頁隨即出現。

  3. 在 [攝氏] 方塊中,輸入 100,然後按一下 [叫用]。

    新視窗隨即出現,其中會顯示叫用 CelsiusToFahrenheit 方法時由 Web 服務所傳回的 XML。值 [212] 會顯示在 XML 中。

  4. 關閉包含方法結果的瀏覽器。

  5. 在原始瀏覽器中,按一下 [上一頁] 以回到方法清單。

  6. 按一下 [FahrenheitToCelsius] 並進行測試,確認方法傳回您所預期的結果。

    如果您輸入 212,則 FahrenheitToCelsius 方法將傳回 [100]。

  7. 關閉瀏覽器。

您現在已完成建立 Web 服務,下一個步驟便是使用該服務。

使用 Web 服務

現在您已經有 Web 服務,接下來您會建立一個網站,以在其中參考和使用所建立的 Web 服務。在這個逐步解說中,您將建立包含一個網頁的不同網站,您會在該網頁中開始剛才所建立的 Web 服務方法。

若要建立網站以使用 Web 服務

  1. 在 [檔案] 功能表上,按一下 [新網站]。

  2. 請在 [Visual Studio 安裝的範本] 下方,按一下 [ASP.NET 網站]。

  3. 按一下 [瀏覽]。

  4. 按一下 [本機 IIS]。

  5. 按一下 [預設的網站]。

  6. 按一下 [建立新 Web 應用程式]。

    Visual Web Developer 便會建立新的 IIS Web 應用程式。

  7. 輸入 TemperatureWeb 的名稱。

  8. 按一下 [開啟]。

  9. 在 [語言] 清單中,按一下您想要操作的程式語言。

  10. 按一下 [確定]。

    Visual Web Developer 會建立新的本機 IIS 網站,以及名為 Default.aspx 的新網頁。

加入 Web 服務做為元件

Web 服務是可讓您在應用程式中參考的元件,因此,您必須建立 Web 服務的參考。

若要建立 Web 服務的參考

  1. 在 [網站] 功能表中,按一下 [加入Web 參考]。

    [加入 Web 參考] 對話方塊隨即出現,如以下螢幕擷取畫面所示。

    加入 Web 參考對話方塊

    加入 Web 參考對話方塊

  2. 在 [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 伺服器。如需詳細資訊,請連絡網路系統管理員。

  3. 按一下其中一個方法連結。

    方法的測試頁隨即出現。

  4. 按一下 [加入參考]。

    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,然後進行控制項的程式設計,將指定的溫度換算成華氏和攝氏。當網頁執行時,看起來會如下圖所示:

溫度換算畫面

VenusWebServicesWalkthroughConsumePage 螢幕擷取畫面

若要呼叫 Web 服務方法

  1. 開啟 Default.aspx 頁面,並切換到設計檢視。

  2. 從 [工具箱] 的 [標準] 群組中,將下列控制項拖曳到頁面上,並依照指示設定其屬性:

    控制項

    屬性

    Textbox

    ID:TemperatureTextbox

    Text:(空白)

    Button

    ID:ConvertButton

    Text:Convert

    Label

    ID:FahrenheitLabel

    Text:(空白)

    Label

    ID:CelsiusLabel

    Text:(空白)

  3. 或者,也可以將文字加入至頁面做為標題。

    在此逐步解說中,頁面的配置並不重要。

  4. 按兩下 ConvertButton,為其 Click 事件建立事件處理常式。

  5. 請確定您的事件處理常式程式碼符合下列範例中的程式碼。

    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();
    }
    
  6. 按 CTRL+F5 執行頁面。

  7. 在文字方塊中輸入值,例如 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 服務網站中啟用偵錯

  1. 在 [檔案] 功能表上,按一下 [開啟網站]。

  2. 按一下 [本機 IIS]。

  3. 按一下 [TemperatureWebService],然後按一下 [開啟]。

  4. 在 [網站] 功能表中,按一下 [ASP.NET 組態],以開啟 [網站管理工具]。

    注意事項:

    如果這是您第一次執行 [網站管理工具],在該工具顯示前可能會有稍許延遲。

  5. 按一下 [應用程式],然後按一下 [應用程式組態]。

  6. 請在 [偵錯及追蹤] 下方,按一下 [設定偵錯及追蹤]。

  7. 選取 [啟用偵錯] 核取方塊。

    [網站管理工具] 會建立網站的 Web.config 檔,並設定組態選項以啟用偵錯。

    注意事項:

    若要在 [方案總管] 中查看 Web.config 檔,請按一下網站名稱,然後在 [方案總管] 工具列中,按一下 [重新整理]。

  8. 關閉 [網站管理工具]。

您現在必須為使用 Web 服務的網站啟用偵錯。

若要在網站中啟用偵錯

  1. 開啟 TemperatureWeb 網站。

  2. 在 [網站] 功能表中,按一下 [ASP.NET 組態],以開啟 [網站管理工具]。

  3. 依序按一下 [應用程式]、按一下 [應用程式組態]、在 [偵錯及追蹤] 下方按一下 [設定偵錯及追蹤],然後選取 [啟用偵錯] 核取方塊。

  4. 關閉 [網站管理工具]。

    注意事項:

    若要在 [方案總管] 中查看 Web.config 檔,請選取網站名稱,然後在 [方案總管] 工具列中,按一下 [重新整理]。

  5. 在 [方案總管] 中,以滑鼠右鍵按一下 [Default.aspx],然後按一下 [檢視程式碼]。

    Visual Web Developer 會開啟網頁的程式碼檔。

  6. 將指標放置在下一行中:

    temperature = System.Convert.ToDouble(TemperatureTextbox.Text)
    
    double temperature =
        System.Convert.ToDouble(TemperatureTextbox.Text);
    
  7. 按 F9 在該行設定中斷點。

測試偵錯

設定好網站和 Web 服務的偵錯後,您現在可以嘗試使用偵錯。您會在 Default.aspx 頁面中開始逐步執行程式碼,直到程式碼叫用 Web 服務。偵錯工具會切換至 Web 服務,並繼續逐步執行程式碼。

若要偵錯網頁和 Web 服務

  1. 按 F5 執行 Default.aspx 頁面與偵錯。

    頁面會出現在瀏覽器中。

  2. 在方塊中輸入值,例如,100,然後按一下 [換算]。

    Visual Web Developer 會開始執行頁面的程式碼,但是會在包含中斷點的程式碼行停止並反白顯示該行。

  3. 按 F11 可執行至下一行。

  4. 再按一次 F11。

    由於下一行會叫用 Web 服務,因此偵錯工具會逐步執行 Web 服務,並在 FahrenheitToCelsius 方法的第一行停止。

  5. 繼續按 F11。

    偵錯工具會逐步執行方法的其他部分,然後回到呼叫頁面。如果您繼續逐步執行,則偵錯工具會逐步執行回 Web 服務和 CelsiusToFahrenheit 方法。

  6. 關閉瀏覽器,如此也會關閉偵錯工具。

後續步驟

在本逐步解說中,說明了建立非常簡單之 Web 服務並將其用於 ASP.NET 應用程式中的基本原則,如果您想試驗其他更複雜的 Web 服務功能,建議您進一步探索下列各項:

請參閱

工作

逐步解說:在 Visual Web Developer 中進行 Web 網頁偵錯

概念

使用 ASP.NET 建立之 XML Web Service 的設計方針

為使用 ASP.NET 建立的 XML Web Service 設定安全性

參考

XML Web Service 中的 @ WebService 指示詞

其他資源

建立 Visual Web Developer 網站導覽

<webServices> 項目

使用 ASP.NET 的 XML Web Service