共用方式為


作法:不使用組態新增 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 服務

如需如何使用設定元素設定 ASP.NET AJAX 端點的大綱,請參閱如何:使用設定新增 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. 使用 ICalculator 來實作 CalculatorService 服務合約。

    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 Calculator 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 中裝載的詳細資訊,請參閱如何:在 IIS 中裝載 WCF 服務

若要呼叫服務

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

範例

自動設定的端點會在相對於基底 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 擴充裝載主題。

另請參閱