@ServiceHost
將用來產生服務主機的處理站,與要裝載的服務和存取或編譯 .svc 檔案中提供的程式碼所需的其他程式設計方面加以關聯。
<% @ServiceHost
Service = "Service, ServiceNamespace"
Factory = "Factory, FactoryNamespace"
Debug = "Debug"
Language = "Language"
CodeBehind = "CodeBehind"%>
屬性
Service
所裝載之服務的 CLR 型別名稱。這應該是實作一個以上的服務合約之型別的限定名稱。
Factory
用來具現化服務主機的服務主機處理站之 CLR 型別名稱。這是一個選擇性的屬性。如果沒有指定,則使用預設的 ServiceHostFactory,它會傳回 ServiceHost 的執行個體。
Debug
表示 Windows Communication Foundation (WCF) 服務是否應以偵錯符號進行編譯。若 WCF 服務應以偵錯符號編譯,則為 true,否則為 false。
Language
指定編譯檔案內 (.svc) 所有內嵌程式碼時使用的語言。這些值可以表示任何 .NET 支援的語言,包括 C#、VB 和 JS (分別指 C#、Visual Basic .NET 和 JScript .NET)。這是一個選擇性的屬性。
CodeBehind
當實作 XML Web Service 的類別不是存放在相同的檔案中,且尚未編譯為組件並置於 \Bin 目錄內的時候,請指定實作 XML Web Service 的原始程式檔。
備註
用來裝載服務的 ServiceHost 是 Windows Communication Foundation (WCF) 程式設計模型中的擴充點。因為 ServiceHost 是潛在的多型型別,而裝載環境不應直接具現化多型型別,所以使用處理站模式加以具現化。
預設實作會使用 ServiceHostFactory 來建立 ServiceHost 的執行個體。但您可在 @ServiceHost 指示詞中指定處理站實作的 CLR 型別名稱,藉此提供您自己的處理站 (會傳回您的衍生主機之處理站)。
若要使用您自己的自訂服務主機處理站而非預設處理站,請依下列方式在 @ServiceHost 指示詞中提供型別名稱︰
<% @ServiceHost Factory=”DerivedFactory” Service=”MyService” %>
盡可能保持處理站實作的簡便。假設您有許多自訂邏輯,那麼若您將邏輯放在主機而非處理站內,則這些程式碼就更能重複使用。
例如,若要針對 MyService 啟用具備 AJAX 能力的端點,請在 @ServiceHost 指示詞內,對 Factory 屬性之值指定 WebScriptServiceHostFactory,而不要使用預設的 ServiceHostFactory,如下列範例所示。
範例
<% @ServiceHost
Service="MyService"
Language="C#"
Debug="true"
Factory="WebScriptServiceHostFactory"
%>