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 服務
使用以 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… }使用
ICalculator來實作CalculatorService服務合約。public class CalculatorService : ICalculator { public double Add(double n1, double n2) { return n1 + n2; } //Other operations omitted…定義
ICalculator和CalculatorService實作的命名空間,方法是將它們包裝在命名空間區塊中。Namespace Microsoft.Ajax.Samples { //Include the code for ICalculator and Calculator here. }
若要將服務裝載到不含組態的網際網路資訊服務中
在應用程式中建立名為 service 且包含 .svc 副檔名的新檔案。 您可以為服務新增適當的 @ServiceHost 指示詞,來編輯這個檔案。 指定 WebScriptServiceHostFactory 將用在 @ServiceHost 指示詞中,以自動設定 ASP.NET AJAX 端點。
<%@ServiceHost language=c# Debug="true" Service="Microsoft.Ajax.Samples.CalculatorService" Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory %>建置服務並從用戶端呼叫。 網際網路資訊服務 (IIS) 會在收到呼叫時啟用服務。 如需在 IIS 中裝載的詳細資訊,請參閱如何:在 IIS 中裝載 WCF 服務。
若要呼叫服務
- 端點會在相對於 .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 擴充裝載主題。