共用方式為


HOW TO:不使用組態新增 ASP.NET AJAX 端點

Windows Communication Foundation (WCF) 可讓您建立服務以公開啟用 ASP.NET AJAX 的端點,並可在用戶端網站上透過 JavaScript 來呼叫此端點。若要建立此類端點,您可以使用組態檔 (與建立其他所有 WCF 端點一樣),或是使用不需要任何組態項目的方法。本主題示範第二種方法。

若要以不包含組態的 ASP.NET AJAX 端點來建立服務,服務必須由網際網路資訊服務 (IIS) 加以裝載。若要使用此方法來啟動 ASP.NET AJAX 端點,請在 .svc 檔案中的 @ServiceHost 指示詞中,將 WebScriptServiceHostFactory 指定為處理站參數。這項自訂的處理站元件會自動設定 ASP.NET AJAX 端點,以便用戶端網站上的 JavaScript 能夠對它呼叫。

如需實用範例,請參閱 AJAX Service Without Configuration sample

如需如何使用組態項目來設定 ASP.NET AJAX 端點的概述,請參閱 HOW TO:使用組態新增 ASP.NET AJAX 端點

若要建立基本 WCF 服務

  1. 使用以 ServiceContractAttribute 屬性標記的介面來定義基本的 WCF 服務合約。以 OperationContractAttribute 標記每項作業。請務必設定 Namespace 屬性。

    [ServiceContract(Namespace = "MyService")]]
    public interface ICalculator
    {
        [OperationContract]
        // This operation returns the sum of d1 and d2.
        double Add(double n1, double n2);
    
        //Other operations omitted…
    
    }
    
  2. 使用 CalculatorService 來實作 ICalculator 服務合約。

    public class CalculatorService : ICalculator
    {
        public double Add(double n1, double n2)
        {
            return n1 + n2;
        }
    
    //Other operations omitted…
    
  3. 定義 ICalculatorCalculatorService 實作的命名空間,方法是將它們包裝在命名空間區塊中。

    Namespace Microsoft.Ajax.Samples
    {
        //Include the code for ICalculator and Caculator here.
    }
    

若要將服務裝載到不含組態的網際網路資訊服務中

  1. 在應用程式中建立名為 service 且包含 .svc 副檔名的新檔案。您可以為服務新增適當的 @ServiceHost 指示資訊,編輯這個檔案。指定 WebScriptServiceHostFactory 將用在 @ServiceHost 指示詞中,以自動設定 ASP.NET AJAX 端點。

    <%@ServiceHost 
        language=c# 
        Debug="true" 
        Service="Microsoft.Ajax.Samples.CalculatorService"
        Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory
    %>
    
  2. 建置服務並從用戶端呼叫。網際網路資訊服務 (IIS) 會在收到呼叫時啟動服務。如需 在 IIS 裝載的詳細資訊,請參閱 HOW TO:在 IIS 中裝載 WCF 服務

若要呼叫服務

  1. 端點會在相對於 .svc 檔案的空白位址上設定,因此服務現在可以使用而且可藉由將要求傳送至 service.svc/<operation> 來叫用。例如,Add 作業的 service.svc/Add。您可以將服務 URL 輸入 ASP.NET AJAX 指令碼管理員控制項的指令碼集合來加以使用。如需範例,請參閱 AJAX Service Without Configuration sample

範例

自動設定的端點會在相對於基底 URL 的空白位址建立。您也可以新增組態檔並搭配這個方法使用。如果組態檔包含端點定義,則這些端點就會新增到自動設定的端點中。

例如,service.svc 會使用 WebScriptServiceHostFactory 而服務目錄則包含了 Web.config 檔案,以便透過 "soap" 相對位址上的 BasicHttpBinding 來定義相同服務的端點。在此情況中,服務包含了兩個端點:一個位於 service.svc (回應 ASP.NET AJAX 的要求) 而另一個則位於 service.svc/soap (回應 SOAP 的要求)。

如果組態檔在空白的相對位址上定義了端點,並且使用了 WebScriptServiceHostFactory,則會擲回例外狀況,而且服務也將無法啟動。

您無法在自動設定的端點上使用組態來修改設定。如果必須修改任何設定 (例如,讀取器配額),您不可以藉由移除 .svc 檔案中的 WebScriptServiceHostFactory 並為端點建立組態項目的方式來使用無組態檔的方式。

如果您的服務要求使用 ASP.NET 相容性模式 (例如,如果它使用 HttpContext 類別或 ASP.NET 授權機制) 則您還是需要組態檔來開啟此模式。所需的組態項目為 <serviceHostingEnvironment> 項目,請務必依照下列方式新增。

<system.serviceModel>

<serviceHostingEnvironment aspNetCompatibilityEnabled=”true” /> </system.serviceModel>

如需詳細資訊,請參閱 WCF 服務與 ASP.NET 主題。

WebScriptServiceHostFactory 類別是 ServiceHostFactory 的衍生類別。如需服務主機處理站機制的詳細說明,請參閱使用 ServiceHostFactory 擴充裝載主題。

請參閱

工作

HOW TO:將啟用 AJAX 的 ASP.NET Web 服務移轉至 WCF

概念

建立 ASP.NET AJAX 的 WCF 服務