WebServiceHost 類別

定義

補充 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)

方法

Abort()

導致通訊物件立即從目前的狀態轉換為關閉狀態。

(繼承來源 CommunicationObject)
AddBaseAddress(Uri)

將基底位址新增至服務主機。

(繼承來源 ServiceHostBase)
AddDefaultEndpoints()

針對在具有預設繫結的服務主機上找到的各個合約,為所有的基底位址加入服務端點。

(繼承來源 ServiceHostBase)
AddServiceEndpoint(ServiceEndpoint)

將指定的服務端點加入至裝載的服務。

(繼承來源 ServiceHostBase)
AddServiceEndpoint(String, Binding, String)

使用指定的合約、繫結和端點位址,將服務端點加入至裝載的服務。

(繼承來源 ServiceHostBase)
AddServiceEndpoint(String, Binding, String, Uri)

使用指定的合約、繫結、端點位址,以及包含其接聽所在位址的 URI,將服務端點新增至裝載的服務。

(繼承來源 ServiceHostBase)
AddServiceEndpoint(String, Binding, Uri)

使用指定的合約、繫結以及含有端點位址的 URI,將服務端點新增至裝載的服務。

(繼承來源 ServiceHostBase)
AddServiceEndpoint(String, Binding, Uri, Uri)

使用指定的合約、繫結以及含有端點與接聽位址的 URI,將服務端點新增至裝載的服務。

(繼承來源 ServiceHostBase)
AddServiceEndpoint(Type, Binding, String)

使用指定的合約、繫結和端點位址,將服務端點加入至裝載的服務。

(繼承來源 ServiceHost)
AddServiceEndpoint(Type, Binding, String, Uri)

使用指定的合約、繫結、端點位址以及服務所接聽的 URI,將服務端點加入至裝載的服務。

(繼承來源 ServiceHost)
AddServiceEndpoint(Type, Binding, Uri)

使用指定的合約、繫結以及含有端點位址的 URI,將服務端點新增至裝載的服務。

(繼承來源 ServiceHost)
AddServiceEndpoint(Type, Binding, Uri, Uri)

使用指定的合約、繫結、含有端點位址的 URI 以及服務所接聽的 URI,將服務端點新增至裝載的服務。

(繼承來源 ServiceHost)
ApplyConfiguration()

從組態檔載入服務描述,並將其套用至正在建構的執行階段。

(繼承來源 ServiceHost)
BeginClose(AsyncCallback, Object)

開始非同步作業以關閉通訊物件。

(繼承來源 CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

開始非同步作業,關閉有已指定逾時的通訊物件。

(繼承來源 CommunicationObject)
BeginOpen(AsyncCallback, Object)

開始非同步作業以開啟通訊物件。

(繼承來源 CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

開始非同步作業,開啟有已指定時間間隔的通訊物件。

(繼承來源 CommunicationObject)
Close()

導致通訊物件從目前的狀態轉換為已關閉狀態。

(繼承來源 CommunicationObject)
Close(TimeSpan)

在指定時間間隔內,讓通訊物件從目前的狀態轉換為已關閉狀態。

(繼承來源 CommunicationObject)
CreateDescription(IDictionary<String,ContractDescription>)

建立裝載之服務的描述。

(繼承來源 ServiceHost)
EndClose(IAsyncResult)

完成非同步作業以關閉通訊物件。

(繼承來源 CommunicationObject)
EndOpen(IAsyncResult)

完成非同步作業以開啟通訊物件。

(繼承來源 CommunicationObject)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
Fault()

導致通訊物件從目前的狀態轉換為錯誤狀態。

(繼承來源 CommunicationObject)
GetCommunicationObjectType()

取得通訊物件的型別。

(繼承來源 CommunicationObject)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
IncrementManualFlowControlLimit(Int32)

使用指定的增量,增加前往裝載之服務的訊息流量率限制。

(繼承來源 ServiceHostBase)
InitializeDescription(Object, UriSchemeKeyedCollection)

根據服務的執行個體和指定的基底位址,初始化裝載之服務的描述。

(繼承來源 ServiceHost)
InitializeDescription(Type, UriSchemeKeyedCollection)

根據服務的類型和指定的基底位址,初始化裝載之服務的描述。

(繼承來源 ServiceHost)
InitializeDescription(UriSchemeKeyedCollection)

使用合約和服務描述建立並初始化服務主機。

(繼承來源 ServiceHostBase)
InitializeRuntime()

初始化服務主機的執行階段。

(繼承來源 ServiceHostBase)
LoadConfigurationSection(ServiceElement)

從裝載之服務的組態檔載入服務項目。

(繼承來源 ServiceHostBase)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
OnAbort()

中止服務。

(繼承來源 ServiceHostBase)
OnBeginClose(TimeSpan, AsyncCallback, Object)

開始服務主機關閉時所叫用的非同步作業。

(繼承來源 ServiceHostBase)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

開始服務主機開啟時所叫用的非同步作業。

(繼承來源 ServiceHostBase)
OnClose(TimeSpan)

關閉裝載的服務,包括其通道發送器以及相關執行個體內容和接聽程式。

(繼承來源 ServiceHostBase)
OnCloseAsync(TimeSpan)

補充 Windows Communication Foundation (WCF) REST 程式設計模型的 ServiceHost 衍生類別。

(繼承來源 CommunicationObject)
OnClosed()

在服務主機關閉時,處置可處置的裝載中服務。

(繼承來源 ServiceHost)
OnClosing()

在將通訊物件轉換為關閉狀態期間會叫用。

(繼承來源 CommunicationObject)
OnEndClose(IAsyncResult)

完成關閉服務主機時所叫用的非同步作業。

(繼承來源 ServiceHostBase)
OnEndOpen(IAsyncResult)

完成開啟服務主機時所叫用的非同步作業。

(繼承來源 ServiceHostBase)
OnFaulted()

在通訊物件上插入處理 (當它因為叫用同步錯誤作業而轉換到錯誤狀態之後)。

(繼承來源 CommunicationObject)
OnOpen(TimeSpan)

開啟通道發送器。

(繼承來源 ServiceHostBase)
OnOpenAsync(TimeSpan)

補充 Windows Communication Foundation (WCF) REST 程式設計模型的 ServiceHost 衍生類別。

(繼承來源 CommunicationObject)
OnOpened()

取得裝載之服務的服務認證、服務驗證及授權行為。

(繼承來源 ServiceHostBase)
OnOpening()

在開啟 WebServiceHost 執行個體時呼叫。

Open()

導致通訊物件從已建立狀態轉換為已開啟狀態。

(繼承來源 CommunicationObject)
Open(TimeSpan)

在指定時間間隔內,讓通訊物件從已建立狀態轉換為已開啟狀態。

(繼承來源 CommunicationObject)
ReleasePerformanceCounters()

釋放裝載之服務的服務和通道發送器效能計數器。

(繼承來源 ServiceHostBase)
SetEndpointAddress(ServiceEndpoint, String)

將指定之端點的端點位址設定為指定的位址。

(繼承來源 ServiceHostBase)
ThrowIfDisposed()

如果已處置通訊物件,則會擲回例外狀況。

(繼承來源 CommunicationObject)
ThrowIfDisposedOrImmutable()

如果通訊物件的 State 屬性並未設定為 Created 狀態,就會擲回例外狀況。

(繼承來源 CommunicationObject)
ThrowIfDisposedOrNotOpen()

如果通訊物件不是處於 Opened 狀態,就會擲回例外狀況。

(繼承來源 CommunicationObject)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

事件

Closed

當通訊物件轉換至已關閉狀態時發生。

(繼承來源 CommunicationObject)
Closing

當通訊物件轉換至關閉狀態時就會發生。

(繼承來源 CommunicationObject)
Faulted

當通訊物件轉換至錯誤狀態時發生。

(繼承來源 CommunicationObject)
Opened

當通訊物件轉換至已開啟狀態時發生。

(繼承來源 CommunicationObject)
Opening

當通訊物件轉換至開啟狀態時發生。

(繼承來源 CommunicationObject)
UnknownMessageReceived

發生於收到未知訊息時。

(繼承來源 ServiceHostBase)

明確介面實作

IDisposable.Dispose()

關閉服務主機。

(繼承來源 ServiceHostBase)

適用於