共用方式為


宣告 XML Web Service

當您在 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 檔案或不同檔案。若您使用不同檔案,必須將它編譯成組件 (Assembly)。您也可以選擇性地將 WebService 屬性套用至實作 XML Web Service 的類別。而實作 XML Web Service 的類別可從 WebService 類別衍生。

XML Web Service 實作位於同一檔案時,XML Web Service 的宣告方式

  • @ WebService 指示詞加入副檔名為 .asmx 的檔案頂端,指定實作 XML Web Service 的類別,以及實作使用的程式語言。

    Class 屬性可以設定成與 @ WebService 指示詞相同組件中的類別,或設定成其他組件中的類別。若類別位於其他組件,必須到 XML Web Service 所在的 Web 應用程式下,將類別放在 \Bin 目錄裡。Language 屬性可設定為 C#VBJS,分別代表 C#、Visual Basic .NET 和 JScript .NET。

    下列程式碼範例設定 C#@ WebService 指示詞的 Language 屬性,以及位於相同檔案中之 MyMathClass 屬性。

    <%@ WebService Language="C#" Class="MyMath" %>
    using System.Web.Services;
    public class MyMath {
         [ WebMethod ]
         public int Add(int num1, int num2) {
              return num1+num2;
         }
    }
    

XML Web Service 實作位於組件時,XML Web Service 的宣告方式

  • @ WebService 指示詞加入副檔名為 .asmx 的檔案頂端,指定實作 XML Web Service 的類別,以及實作使用的程式語言。

    下列 @ WebService 指示詞是副檔名為 .asmx 的檔案中唯一的指令行,指定 MyName.MyWebService 類別要放在裝載 (Host) XML Web Service 的 Web 應用程式 \Bin 目錄裡的 MyAssembly 組件中。

    <%@ WebService Language="C#" Class="MyName.MyWebService,MyAssembly" %>
    [Visual Basic]
    <%@ WebService Language="VB" Class="MyName.MyWebService,MyAssembly" %>
    

    **注意   **如果您不指定 @ WebService 指示詞中的組件,ASP.NET 會到 XML Web Service 首次被存取時,裝載 XML Web Service 的 Web 應用程式裡,搜尋 \Bin 目錄中的組件清單。所以,提供組件名稱能使您在首次存取提高效能。

套用 WebService 屬性

藉由將選擇性 (Optional) WebService 屬性套用至實作 XML Web Service 的類別,可以設定該 XML Web Service 的預設 XML 命名空間 (Namespace) 與描述該 XML Web Service 的字串。

公開該 XML Web Service 給消費者前,極力建議您修改這個預設命名空間 http://tempuri.org。這點相當重要,您有必要將該 XML Web Service 與其他的 XML Web Service 區分,以免其他服務不慎使用預設的命名空間 (<http://tempuri.org/>)。

若要設定XML Web Service 為其成員的 XML 命名空間

  • WebService 屬性套用至實作 XML Web Service 的類別,並設定 Namespace 屬性。

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

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

[WebService(Namespace="https://www.contoso.com/")]
public class Math {
     [ WebMethod ]
     public int Add(int num1, int num2) {
         return num1+num2;
         }
 }
[Visual Basic]
<%@ WebService Language="VB" Class="Math"%>
Imports System.Web.Services
Imports System

<WebService(Namespace:="https://www.contoso.com/")> _
Public Class Math
  <WebMethod()> _
   Public Function Add(num1 As Integer, num2 As Integer) _
                   As Integer
        Return num1 + num2
    End Function 
End Class 

從 WebService 類別衍生

實作 XML Web Service (使用 ASP.NET 建立) 的類別可以選擇性地自 WebService 類別衍生,以取得對通用 ASP.NET 物件的存取權限,例如 ApplicationSessionUserContext。透過 ApplicationSession 屬性,您可存取應用程式整個存留期 (Lifetime) 或特定工作階段的儲存或擷取狀態。如需狀態管理的詳細資訊,請參閱在使用 ASP.NET 建立的 XML Web Service 中管理狀態。如果驗證已經啟用,User 屬性裡會包含 XML Web Service 呼叫端的識別 (Identity),XML Web Service 可透過識別判斷要求是否已授權。如需驗證的詳細資訊,請參閱設定 XML Web Service 的安全性。而 Context 屬性可讓您存取關於 XML Web Service 用戶端要求的所有 HTTP 特定資訊。如需 Context 屬性的詳細資訊,請參閱 WebService.Context 屬性

下列程式碼範例使用 Context 屬性,在伺服器上取得要求時間。

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

public class Util: WebService {
   [ WebMethod(Description="Returns the time as stored on the Server",
               EnableSession=false)]
   public string Time() 
   {
      return Context.Timestamp.TimeOfDay.ToString();
   }
 } 
[Visual Basic]
<%@ WebService Language="VB" Class="Util" %>
Imports System
Imports System.Web.Services

Public Class Util
   Inherits WebService
   
   <WebMethod(Description := "Returns the time as stored on the Server", _
              EnableSession := False)> _
   Public Function Time() As String
        Return Context.Timestamp.TimeOfDay.ToString()
   End Function
End Class

請參閱

定義 XML Web Service 方法 | 使用 ASP.NET 建置 XML Web Service | 使用 ASP.NET 建置 XML Web Service 的基本概念