逐步解說:使用 ASP.NET 建置基本 XML Web Service

使用 ASP.NET 開發 XML Web Service 時,首先會執行下列步驟:

  1. 建立具有 .asmx 副檔名的檔案,然後使用 @WebService 指示詞,在其中宣告 Web 服務

  2. 建立實作 Web 服務的類別。您可以選擇從 WebService 類別衍生這個類別。

  3. 或者,也可以將 WebServiceAttribute 屬性套用至實作 Web 服務的類別。

  4. 定義構成 Web 服務功能的 Web 服務方法。

宣告 Web 服務

在 ASP.NET 中建立 XML Web Service 時,您會在副檔名為 .asmx 的文字檔開頭放置 @ WebService 指示詞。在 .asmx 檔案中使用 @ WebService 指示詞時,可以讓 XML Web Service 的 URL 位址和它的實作產生相互關聯。接下來,您要實作 XML Web Service 類別,以定義公開給 XML Web Service 用戶端的方法和資料型別。最後,將您的 XML Web Service 邏輯新增至這些方法,以便處理 XML Web Service 要求並將回應傳回。您定義的 XML Web Service 類別可以直接包含在 .asmx 檔案或不同的檔案中。如果您要使用個別的檔案,則必須將它編譯成組件。或者,也可以將 WebService 屬性套用至實作 XML Web Service 的類別。實作 XML Web Service 的類別可以衍生自 WebService 類別。

若要宣告實作位於同一檔案的 Web 服務

  • @ WebService 指示詞新增至具有 .asmx 副檔名之檔案的開頭,並指定實作 Web 服務的類別和用於實作的程式語言。

    您可以將 Class 屬性設定為和 @ WebService 指示詞同在一個組件的類別,或設定為不同組件中的類別。如果類別位於不同的組件,則必須將它置於 Web 服務所在之 Web 應用程式下的 \Bin 目錄中。Language 屬性可以設定為 C#VBJS (分別指 C#、Visual Basic .NET 和 JScript .NET)。

    下列程式碼範例會設定 @ WebService 指示詞的 Language 屬性,並且將 Class 屬性設定為位於相同檔案中的 Util**。

    <%@ WebService Language="C#" Class="Util" %>
    
    <%@ WebService Language="VB" Class="Util" %>
    

若要宣告實作位於組件的 Web 服務

  • @ WebService 指示詞新增至具有 .asmx 副檔名之檔案的開頭,並指定實作 Web 服務的類別、含有實作的組件以及用於實作的程式語言。如果您要使用個別的檔案,則必須將它編譯成組件。

    下列 @ WebService 指示詞在副檔名為 .asmx 的檔案中只佔一行,表示 MyName.MyWebService 類別是位於 Web 應用程式 (裝載 Web 服務) 之 \Bin 目錄中的 MyAssembly 組件。

    <%@ WebService Language="C#" Class="MyName.MyWebService,MyAssembly" %>
    
    <%@ WebService Language="VB" Class="MyName.MyWebService,MyAssembly" %>
    
    Note注意:

    如果您未在 @ WebService 指示詞中指定組件,ASP.NET 就會在第一次存取 Web 服務時搜尋 Web 應用程式 (裝載 Web 服務) 之 \Bin 目錄中的組件清單。因此,您可以提供組件名稱來改善第一次存取時的效能。

從 WebService 類別衍生

您可以選擇從 WebService 類別衍生實作 Web 服務 (使用 ASP.NET 所建立) 的類別,來存取通用 ASP.NET 物件,例如 ApplicationSessionUserContext

若要從 WebService 類別衍生,並存取通用 ASP.NET 物件

<%@ WebService Language="C#" Class="Util" %>
using System;
using System.Web.Services;

public class Util: WebService 
<%@ WebService Language="VB" Class="Util" %>
Imports System
Imports System.Web.Services

Public Class Util
   Inherits WebService

套用 WebService 屬性

將選擇性 WebService 屬性套用至實作 Web 服務的類別,以便設定 Web 服務的預設 XML 命名空間 (原本為 http://tempuri.org) 以及用來描述 Web 服務的字串。

強烈建議您先變更這個預設命名空間 (原為 http://tempuri.org),再公開這個 XML Web Service 以供取用。這點相當重要,因為 XML Web Service 必須與其他可能不小心沿用預設命名空間 (<http://tempuri.org/>) 的 XML Web Service 有所區分。

若要設定 Web 服務所屬的 XML 命名空間

  • WebService 屬性 (Attribute) 套用至實作 Web 服務的類別,並設定 Namespace 屬性 (Property)。

下列程式碼範例會將 XML 命名空間設定為 https://www.contoso.com/。

<%@ WebService Language="C#" Class="Util" Debug=true%>
using System.Web.Services;
using System;

[WebService(Namespace="https://www.contoso.com/")]
public class Util: WebService 
<%@ WebService Language="VB" Class="Util"%>
Imports System.Web.Services
Imports System

<WebService(Namespace:="https://www.contoso.com/")> _
Public Class Util
    Inherits WebService

定義 Web 服務方法

實作 Web 服務之類別的方法不會自動具備透過 Web 接受通訊的能力,但是藉由使用 ASP.NET 所建立的 Web 服務,要新增這項功能就變得很簡單。若要新增這項功能,請將 WebMethod 屬性套用至公用方法。可在 Web 服務中透過 Web 接受通訊的方法就稱為 Web 服務方法。

若要宣告 Web 服務方法

  1. 將公用方法新增至實作 Web 服務的類別。

  2. WebMethod 屬性套用至您要對應到 Web 服務作業的公用方法。

下列程式碼範例具有兩個公用方法,其中一個是 Web 服務方法。Multiply 方法是 Web 服務方法,因為它套用了 WebMethod 屬性。

<%@ WebService Language="C#" Class="Util" %>
using System.Web.Services;
using System;

[WebService(Namespace="https://www.contoso.com/")]
public class Util: WebService 
{
    [ WebMethod]    public long Multiply(int a, int b) 
    {
        return a * b;
    }
}
<%@ WebService Language="VB" Class="Util" %>

Imports System.Web.Services
Imports System

<WebService(Namespace:="https://www.contoso.com/")> 
Public Class Util 
    Inherits WebService
    < WebMethod()> _    Public Function Multiply(a As Integer, b As Integer) As Long
        Return a * b
    End Function
End Class

請參閱

參考

WebService Class
WebServiceAttribute Class
WebMethodAttribute Class

概念

ASP.NET XML Web Service 基本概念

其他資源

使用 ASP.NET 的 XML Web Service

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.