WebServiceHost 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
補充 Windows Communication Foundation (WCF) REST 程式設計模型的 ServiceHost 衍生類別。
public ref class WebServiceHost : System::ServiceModel::ServiceHost
public class WebServiceHost : System.ServiceModel.ServiceHost
type WebServiceHost = class
inherit ServiceHost
Public Class WebServiceHost
Inherits ServiceHost
- 繼承
- 衍生
範例
下列範例示範如何使用 WebServiceHost 類別來裝載使用 WCF REST 程式設計模型的服務。
[ServiceContract]
public interface ICalculator
{
[OperationContract]
[WebInvoke(UriTemplate = "add?x={x}&y={y}")]
long Add(long x, long y);
[OperationContract]
[WebInvoke(UriTemplate = "sub?x={x}&y={y}")]
long Subtract(long x, long y);
[OperationContract]
[WebInvoke(UriTemplate = "mult?x={x}&y={y}")]
long Multiply(long x, long y);
[OperationContract]
[WebInvoke(UriTemplate = "div?x={x}&y={y}")]
long Divide(long x, long y);
[OperationContract]
[WebGet(UriTemplate = "hello?name={name}")]
string SayHello(string name);
}
public class CalcService : ICalculator
{
public long Add(long x, long y)
{
return x + y;
}
public long Subtract(long x, long y)
{
return x - y;
}
public long Multiply(long x, long y)
{
return x * y;
}
public long Divide(long x, long y)
{
return x / y;
}
public string SayHello(string name)
{
return "Hello " + name;
}
}
class Program
{
static void Main(string[] args)
{
Uri baseAddress = new Uri("http://localhost:8000/");
WebServiceHost svcHost = new WebServiceHost(typeof(CalcService), baseAddress);
try
{
svcHost.Open();
Console.WriteLine("Service is running");
Console.WriteLine("Press enter to quit...");
Console.ReadLine();
svcHost.Close();
}
catch (CommunicationException cex)
{
Console.WriteLine("An exception occurred: {0}", cex.Message);
svcHost.Abort();
}
}
}
<ServiceContract()> _
Public Interface ICalculator
<OperationContract()> _
<WebInvoke(UriTemplate:="add?x={x}&y={y}")> _
Function Add(ByVal x As Long, ByVal y As Long) As Long
<OperationContract()> _
<WebInvoke(UriTemplate:="sub?x={x}&y={y}")> _
Function Subtract(ByVal x As Long, ByVal y As Long) As Long
<OperationContract()> _
<WebInvoke(UriTemplate:="mult?x={x}&y={y}")> _
Function Multiply(ByVal x As Long, ByVal y As Long) As Long
<OperationContract()> _
<WebInvoke(UriTemplate:="div?x={x}&y={y}")> _
Function Divide(ByVal x As Long, ByVal y As Long) As Long
<OperationContract()> _
<WebGet(UriTemplate:="hello?name={name}")> _
Function SayHello(ByVal name As String) As String
End Interface
Public Class CalcService
Implements ICalculator
Public Function Add(ByVal x As Long, ByVal y As Long) As Long Implements ICalculator.Add
Return x + y
End Function
Public Function Subtract(ByVal x As Long, ByVal y As Long) As Long Implements ICalculator.Subtract
Return x - y
End Function
Public Function Multiply(ByVal x As Long, ByVal y As Long) As Long Implements ICalculator.Multiply
Return x * y
End Function
Public Function Divide(ByVal x As Long, ByVal y As Long) As Long Implements ICalculator.Divide
Return x / y
End Function
Public Function SayHello(ByVal name As String) As String Implements ICalculator.SayHello
Return "Hello " + name
End Function
End Class
備註
如果 WebServiceHost 在服務描述中找不到端點,則會自動針對 HTTP 與 HTTPS 的基底位址在服務的基底位址建立預設端點。 如果使用者已在基底位址明確設定端點,則不會自動建立端點。 WebServiceHost 會自動設定端點的系結,以在安全虛擬目錄中使用相關聯的 Internet Information Services (IIS) 安全性設定。
建立預設 HTTP 端點時,WebServiceHost 也會停用 HTTP 說明網頁和 Web 服務描述語言 (WSDL) 的 GET 功能,使中繼資料端點不會干擾預設 HTTP 端點。
此外,WebServiceHost 類別會將 WebHttpBehavior 新增至所有尚未具有該行為但有 WebMessageEncodingElement 的所有端點。 如果服務上所有作業的 HTTP 要求主體空白,或是將 HTTP 要求主體當成資料流處理,WebServiceHost 就會針對繫結自動設定適當的內容型別對應器。
建構函式
WebServiceHost() |
初始化 WebServiceHost 類別的新執行個體。 |
WebServiceHost(Object, Uri[]) |
使用指定的單一伺服器執行個體及基底位址,初始化 WebServiceHost 類別的新執行個體。 |
WebServiceHost(Type, Uri[]) |
使用指定的服務類型與基底位址,初始化 WebServiceHost 類別的新執行個體。 |
屬性
Authentication |
取得服務驗證行為。 (繼承來源 ServiceHostBase) |
Authorization |
取得裝載之服務的授權行為。 (繼承來源 ServiceHostBase) |
BaseAddresses |
取得裝載之服務使用的基底位址。 (繼承來源 ServiceHostBase) |
ChannelDispatchers |
取得服務主機使用的通道發送器集合。 (繼承來源 ServiceHostBase) |
CloseTimeout |
取得或設定允許服務主機關閉的時間間隔。 (繼承來源 ServiceHostBase) |
Credentials |
取得裝載之服務的認證。 (繼承來源 ServiceHostBase) |
DefaultCloseTimeout |
取得允許服務主機關閉的預設時間間隔。 (繼承來源 ServiceHostBase) |
DefaultOpenTimeout |
取得允許服務主機開啟的預設時間間隔。 (繼承來源 ServiceHostBase) |
Description |
取得裝載之服務的描述。 (繼承來源 ServiceHostBase) |
Extensions |
取得目前指定服務主機的延伸。 (繼承來源 ServiceHostBase) |
ImplementedContracts |
擷取由裝載之服務實作的合約。 (繼承來源 ServiceHostBase) |
IsDisposed |
取得值,這個值會指出是否已經處置通訊物件。 (繼承來源 CommunicationObject) |
ManualFlowControlLimit |
取得或設定由裝載之服務接收的訊息流量控制限制。 (繼承來源 ServiceHostBase) |
OpenTimeout |
取得或設定允許服務主機開啟的時間間隔。 (繼承來源 ServiceHostBase) |
SingletonInstance |
取得裝載之服務的單一執行個體。 (繼承來源 ServiceHost) |
State |
取得值,這個值表示通訊物件目前的狀態。 (繼承來源 CommunicationObject) |
ThisLock |
取得會在狀態轉換期間保護類別執行個體的互斥鎖定。 (繼承來源 CommunicationObject) |
方法
事件
Closed |
當通訊物件轉換至已關閉狀態時發生。 (繼承來源 CommunicationObject) |
Closing |
當通訊物件轉換至關閉狀態時就會發生。 (繼承來源 CommunicationObject) |
Faulted |
當通訊物件轉換至錯誤狀態時發生。 (繼承來源 CommunicationObject) |
Opened |
當通訊物件轉換至已開啟狀態時發生。 (繼承來源 CommunicationObject) |
Opening |
當通訊物件轉換至開啟狀態時發生。 (繼承來源 CommunicationObject) |
UnknownMessageReceived |
發生於收到未知訊息時。 (繼承來源 ServiceHostBase) |
明確介面實作
IDisposable.Dispose() |
關閉服務主機。 (繼承來源 ServiceHostBase) |